长宽放大一倍为: var AxisX,AxisY:Integer;//Image1中心坐标 begin AxisX:=Image1.left+Image1.Width div 2; AxisY:=Image1.Top +Image1.Heigth div 2; Image1.AutoSize:=False; Image1.Width:=Image1.Width+Image1.Width; Image1.Heigth:=Image1.Heigth+Image1.Heigth; Image1.Left:=AxisX-Image1.Width div 2; Image1.Top :=AxisY-Image1.Heigth div 2; Image1.Center:=True; Image1.Stretch:=True; end;//以中心放大!缩小同理哈!
但我所作的就是通过改就image的宽、高来进行电子放大的。望各位大虾多多帮忙,并列出其算法。谢谢!
缩放后ToHeight,ToWidth,ToTop,ToLeft
缩放比例Scale
中心点X,Y(就是鼠标在Image1上的座标)unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Panel1: TPanel;
Image1: TImage;
Edit1: TEdit;
Button1: TButton;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
FromLeft,FromTop,FromWidth,FromHeight: Double;
ToLeft,ToTop,ToWidth,ToHeight: Double;
Scale: Double;
XX,YY: Double;
begin
Scale := StrToFloat(Edit1.Text);
FromLeft := Image1.Left;
FromTop := Image1.Top;
FromHeight := Image1.Height;
FromWidth := Image1.Width; ToWidth := Scale * FromWidth;
ToHeight := Scale * FromHeight; XX := X + FromLeft;
YY := Y + FromTop; ToLeft := XX - Scale * X;
ToTop := YY - Scale * Y; Image1.Top := Round(ToTop);
Image1.Left := Round(ToLeft);
Image1.Width := Round(ToWidth);
Image1.Height := Round(ToHeight);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Left := (Panel1.Width - Image1.Width) div 2;
Image1.Top := (Panel1.Height - Image1.Height) div 2;
end;end.
var
AxisX,AxisY:Integer;//Image1中心坐标
begin
AxisX:=Image1.left+Image1.Width div 2;
AxisY:=Image1.Top +Image1.Heigth div 2;
Image1.AutoSize:=False;
Image1.Width:=Image1.Width+Image1.Width;
Image1.Heigth:=Image1.Heigth+Image1.Heigth;
Image1.Left:=AxisX-Image1.Width div 2;
Image1.Top :=AxisY-Image1.Heigth div 2;
Image1.Center:=True;
Image1.Stretch:=True;
end;//以中心放大!缩小同理哈!