用Delphi实现图像放大镜

用Delphi实现图像放大镜,第1张

用Delphi实现图像放大镜,第2张

一些常用的图片查看软件都有放大局部图像的功能。这个例子就是为了模仿这个函数而开发的。

向表单中添加两个TImage组件,其中一个组件的Name属性设置为Image1,它充当原始图像显示的载体。另一个TImage组件的Name属性设置为Image2,可以显示放大的图像。添加组件后的表单如图1所示。


图1添加组件后的表单


这个例子的核心是StretchBlt函数,用来放大局部图像。响应代码如下:

程序TForm1。Image1MouseMove(发送者:TObjectshift:TShiftState;x,Y:整数);
begin
stretch BLT(Image2。画布。句柄,0,0,Image2。宽度,图像2。高度,
Image1。Canvas.Handle,X-20,Y-20,40,40,src copy);
图2。刷新;
屏幕。cursors[1]:= LoadCursorFromFile(' MAGNIFY。CUR’);
自我。光标:= 1;
end;
程序会先调用StretchBlt函数,以当前鼠标位置为中心点,在Image1组件上选择边长为40的局部图像,将这个局部图像放大到Image2组件。然后通过调用Image2组件的Refresh方法来刷新Image2组件的显示。最后,将鼠标指针指向一个新的形状。

程序代码如下:

unit Unit1
接口
用途

窗口、消息、系统工具、变体、类、图形、控件、表单、
对话框、扩展控件、标准控件。

type
t form 1 = class(t form)
Image1:ti image;
Image2:ti image;
过程Image1MouseMove(发送方:TObjectshift:TShiftState;x,Y:整数);
过程form mousemove(Sender:to object;shift:TShiftState;x,Y:整数);
私有
{私有声明}
公共
{公共声明}
end;

var
form 1:t form 1;
实现
{$R *。dfm}
过程TForm1。Image1MouseMove(发送者:TObjectshift:TShiftState;x,Y:整数);
begin
stretch BLT(Image2。画布。句柄,0,0,Image2。宽度,图像2。高度,图像1。Canvas.Handle,X-20,Y-20,40,40,src copy);
图2。刷新;
屏幕。cursors[1]:= LoadCursorFromFile(' MAGNIFY。CUR’);
自我。光标:= 1;
end;

程序TForm1。FormMouseMove(发件人:TObjectshift:TShiftState;x,Y:整数);
开始
筛选。cursors[1]:= Cr default;
自我。光标:= 1;
end;
结束。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 用Delphi实现图像放大镜

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情