程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 用Delphi輕松實現圖像放大鏡

用Delphi輕松實現圖像放大鏡

編輯:Delphi

在一些常用的看圖軟件中都帶有一個可以放大局部圖像的功能,本實例就是為模仿這一功能開發的。

  向窗體上添加兩個TImage組件,其中一個TImage組件的Name屬性設置為Image1,它充當原圖片顯示的載體。另一個TImage組件的Name屬性設置為Image2,它可以顯示放大後的圖像。添加組件後的窗體如圖1所示。

\<喎?http://www.BkJia.com/kf/ware/vc/" target="_blank" class="keylink">vc3Bhbj48YnIvPg0KICAgICAgICAgICAgzbwxIMztvNPX6bz+uvO1xLSwzOU8L2Rpdj4NCiAgICAgICAgICAgIDwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgPC90Ym9keT4NCjwvdGFibGU+DQo8YnIvPg0KoaGhobG+wP21xLrL0MTKx1N0cmV0Y2hCbHS6r8r9o6zA+9PDU3RyZXRjaEJsdLqvyv3Ktc/Wvtayv828z/G3xbTzo6zP7NOmtPrC68jnz8Kjujxici8+DQo8YnIvPg0KPHRhYmxlIGJvcmRlcmNvbG9yPQ=="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1"> procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
 StretchBlt(Image2.Canvas.Handle,0,0,Image2.Width,Image2.Height,
 Image1.Canvas.Handle, X-20,Y-20,40,40,SRCCOPY);
 Image2.Refresh;
 Screen.Cursors[1]:=LoadCursorFromFile(’MAGNIFY.CUR’);
 Self.Cursor:=1;
end;
  程序首先會調用StretchBlt函數,以鼠標當前位置作為中心點,以邊長為40選中Image1組件上的局部圖像,並放大此局部圖像到Image2組件上。然後通過調用Image2組件的Refresh方法以刷新Image2組件的顯示。最後設置鼠標指針為新的形狀。

  程序代碼如下:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls;

type

 TForm1 = class(TForm)
 Image1: TImage;
 Image2: TImage;
 procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
 procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
private
 { Private declarations }
public
 { Public declarations }
end;

var
 Form1: TForm1;
 implementation
 {$R *.dfm}

procedure TForm1.Image1MouseMove(Sender:TObject;Shift:TShiftState;X,Y: Integer);
begin
 StretchBlt(Image2.Canvas.Handle,0,0,Image2.Width,Image2.Height,
 Image1.Canvas.Handle, X-20,Y-20,40,40,SRCCOPY);
 Image2.Refresh;
 Screen.Cursors[1]:=LoadCursorFromFile(’MAGNIFY.CUR’);
 Self.Cursor:=1;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
 Screen.Cursors[1]:=crDefault;
 Self.Cursor:=1;
end;

end.
  保存文件,然後按F9鍵運行程序,程序運行結果如圖2所示。


圖2 程序運行結果
  放大圖像是一個優秀的看圖軟件必備的功能,本實例提供了一種非常簡便易行的方法,不但代碼數量少,而且執行效率高。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved