?? 圖形的特殊顯示效果 (2001年1月8日).txt
字號:
圖形的特殊顯示效果 (2001年1月8日)
網友更新 分類:圖形圖象 作者: nbwzw(推薦) 推薦:nbwzw 閱讀次數:485
(http://www.codesky.net)
--------------------------------------------------------------------------------
Delphi的繪圖功能十分強大,而它的繪圖功能大部分都集成在Canvas中了,Canvas是一個對象,在這個對象中,幾乎擁有了Windows GDI的所有功能,在Delphi中,所有的圖形函數實際上均隸屬于Canvas對象,而不是屬于表單。這意味著只要包含Canvas對象的資源均可用于繪圖,例如TDrawGrid、TShape、TImage等組件。
在了解Canvas的功能之后,可利用Canvas的成員函數來實現圖形的特殊顯示效果。
一、實現原理
1.實現圖形特殊顯示效果的方法有很多,舉一個比較簡單的例子,實現一幅圖像的下拉效果,方法是將一幅圖像分成n等份(n個大小相等的矩形),然后分成n步,一次拷貝一個矩形到要顯示的位圖上,這樣就實現了圖像的下拉顯示效果。
2.有關Canvas的函數
在Delphi中調用Canvas的矩形拷貝函數,函數原型如下:
procedure CopyRect(Dest:TRect;Canvas:TCanvas;Source:TRect);
該函數可以實現兩個圖像之間任意矩形塊的拷貝,參數說明如下:
Dest:指定目標圖像矩形塊的位置及大小
Canvas:指定源圖像的Canvas
Source:指定源圖像矩形塊的位置及大小
其中,矩形區域定義可通過函數:
Rect(ALeft,ATop,ARight,ABottom:Integer)獲得。
拷貝的方式通過Canvas的另一個屬性CopyMode實現,CopyMode共有3個屬性值:
cmSrcCopy:不加任何改變的從源位圖拷貝到目標位圖
cmBlackness:將目的位圖以黑色填充
cmWhiteness:將目的位圖以白色填充
二、程序設計
1.在Delphi3中新建表單Form1,在表單上放置兩個和源圖像大小相同的TImage組件image1和image2,用image2的picture調入圖像,并將Visible屬性值設為False;再放置一個TTimer組件Timer1,根據圖像顯示快慢設置Interval值,本程序設置為300。
2.程序代碼如下(本程序將圖像分5個矩形塊)
* 添加私有成員
private
{ Private declarations }
DestCanvas:TCanvas;
SrcCanvas:TCanvas;
DestRect:TRect;
* 添加變量k
var
Form1: TForm1;
k:Integer;//在.pas的開頭處添加代碼
* 初始化變量k=0
procedure TForm1.FormCreate(Sender: TObject);
begin
k:=0;
end;
* Timer的事件處理過程
procedure TForm1.Timer1Timer(Sender: TObject);
var
i,j,j0:integer;
arect1,arect2:Trect;
begin
i:=image2.Width; //變量賦初值
j:=image2.Height;
j0:=Trunc(image2.Height/5);
with DestCanvas do
begin
arect2:=Rect(0,j0*k,i,j0*k+j0); //源矩形塊的位置及大小
arect1:=Rect(0,j0*k,i,j0*k+j0); //目標矩形塊的位置及大小
Self.DestCanvas:=Image1.Canvas; //指定目標圖像的Canvas
Self.SrcCanvas:=Image2.Canvas; //指定源圖像的Canvas
SrcCanvas.CopyMode:=cmSrcCopy; //設置拷貝方式
DestCanvas.CopyRect(arect1,SrcCanvas,arect2); //實現塊拷貝
k:=k+1;
if k=5 then Timer1.Enabled:=FALSE;
end;
end;
本程序只是一個簡單的圖像顯示例子,其它圖像顯示方法,如:拉幕式、百葉窗式、馬賽克式、中心向外擴展式均可以由算法實現。
--------------------------------------------------------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -