unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
BackImage: TImage;
ForeImage: TImage;
procedure FormCreate(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure ForeImageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ImageCopy(BoxCenterX, BoxCenterY, BoxSide: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
msHide: Boolean; //鼠标隐藏标志
OldX, OldY, NewX, NewY: Integer; //放大部位的坐标
DestRect, SourceRect : TRect;
const
sSide=30; //在源图像上截取的图像块大小
dSide=45; //在目标图像上显示的放大后的图像大小
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
msHide:=True;
Canvas.CopyMode:=cmSrcCopy;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
Close; //按下键盘任意键退出
end;
procedure TForm1.ImageCopy(BoxCenterX, BoxCenterY, BoxSide: Integer);
begin
with SourceRect do
begin
Left:=BoxCenterX-BoxSide;
Top:=BoxCenterY-BoxSide;
Right:=BoxCenterX+BoxSide;
Bottom:=BoxCenterY+BoxSide;
end;
with DestRect do
begin
Left:=BoxCenterX-dSide;
Top:=BoxCenterY-dSide;
Right:=BoxCenterX+dSide;
Bottom:=BoxCenterY+dSide;
end;
ForeImage.Canvas.CopyRect(DestRect, BackImage.Canvas, SourceRect);
end;
procedure TForm1.ForeImageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
NewX:=X;
NewY:=Y;
if msHide then
begin
OldX:=NewX;
OldY:=NewY;
msHide:=False;
ShowCursor(False);
end
else begin
ImageCopy(OldX, OldY, dSide);
end;
ImageCopy(NewX, NewY, sSide);
OldX:=NewX;
OldY:=NewY;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not msHide then
begin
msHide:=True;
ShowCursor(True);
ImageCopy(OldX, OldY, dSide);
end;
end;
end.