亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi中的圖形顯示技巧

2019-11-18 18:59:04
字體:
來源:轉載
供稿:網友

    概述
  ----目前在許多學習軟件、游戲光盤中,經常會看到各種
  圖形顯示技巧,憑著圖形的移動、交錯、雨滴狀、百頁窗、積木堆疊等顯現方式,使畫面變得更為生動活潑,更 能吸引觀眾。本文將探討如何在Delphi中實現各種圖形顯示技巧。
  基本原理
  ----在Delphi中,實現一副圖象的顯示是非常簡單的,只要在Form中定義一個TImage組件,設置其picture屬性,然后選 擇任何有效的.ICO、.BMP、.EMF或.WMF文件,進行Load,所選文 件就顯示在TImage組件中了。但這只是直接將圖形顯示在窗體中,毫無技巧可言。為了使圖形顯示具有別具一格的效果,可以按下列步驟實現:
  ----定義一個TImage組件,把要顯示的圖形先裝入到TImage組件中,也就是說,把圖形內容從磁盤載入內存中, 做為圖形緩存。
  ----創建一新的位圖對象,其尺寸跟TImage組件中的圖形一樣。
  ----利用畫布(Canvas)的CopyRect功能(將一個畫布的矩形區域拷貝到另一個畫布的矩形區域),使用技巧,動態形
  成位圖文件內容,然后在窗體中顯示位圖。
  ----實現方法
  下面介紹各種圖形顯示技巧:
1.推拉效果
  將要顯示的圖形由上、下、左、右方向拉進屏幕內顯示,同時將屏幕上原來的舊圖蓋掉,此種效果可分為四
  種,上拉、下拉、左拉、右拉,但原理都差不多,以上拉 效果為例。
原理:首先將放在暫存圖形的第一條水平線,搬移至要顯示的位圖的最后一條,接著再將暫存圖形的前兩條水平線,依序搬移至要顯示位圖的最后兩條水平線,然后搬移前三條、前四條???直到全部圖形數據搬完為止。在搬移的過程中即可看到顯示的位圖由下而上浮起,而達到上拉的效果。
程序算法:
PRocedure TForm1.Button1Click(Sender: TObject);
var
newbmp: TBitmap;
i,bmpheight,bmpwidth:integer;
begin
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmpheight:=image1.Height;
bmpwidth:=image1.Width;
for i:=0 to bmpheight do
begin
newbmp.Canvas.CopyRect(Rect
(0,bmpheight-i,bmpwidth,bmpheight),
image1.Canvas,
Rect(0,0,bmpwidth,i));
form1.Canvas.Draw(120,100,newbmp);
end;
newbmp.free;
end;
2.垂直交錯效果
原理:將要顯示的圖形拆成兩部分,奇數條掃描線由上往下搬移,偶數條掃描線的部分則由下往上搬移,而且兩者同時進行。從屏幕上便可看到分別由上下兩端出現的較淡圖形向屏幕中央移動,直到完全清楚為止。
程序算法:
procedure TForm1.Button4Click(Sender: TObject);
var
newbmp:TBitmap;
i,j,bmpheight,bmpwidth:integer;
begin
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmpheight:=image1.Height;
bmpwidth:=image1.Width;
i:=0;
while i< =bmpheight do
begin
j:=i;
while j >0 do
begin
newbmp.Canvas.CopyRect(Rect(0,j-1,bmpwidth,j),
image1.Canvas,
Rect(0,bmpheight-i+j-1,bmpwidth,bmpheight-i+j));
newbmp.Canvas.CopyRect(Rect
(0,bmpheight-j,bmpwidth,bmpheight-j+1),
image1.Canvas,
Rect(0,i-j,bmpwidth,i-j+1));
j:=j-2;
end;
form1.Canvas.Draw(120,100,newbmp);
i:=i+2;
end;
newbmp.free;
end;
3.水平交錯效果
原理:同垂直交錯效果原理一樣,只是將分成兩組后的圖形分別由左右兩端移進屏幕。
程序算法:
procedure TForm1.Button5Click(Sender: TObject);
var
newbmp:TBitmap;
i,j,bmpheight,bmpwidth:integer;
begin
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmpheight:=image1.Height;
bmpwidth:=image1.Width;
i:=0;
while i< =bmpwidth do
begin
j:=i;
while j >0 do
begin
newbmp.Canvas.CopyRect(Rect(j-1,0,j,bmpheight),
image1.Canvas,
Rect(bmpwidth-i+j-1,0,bmpwidth-i+j,bmpheight));
newbmp.Canvas.CopyRect(Rect
(bmpwidth-j,0,bmpwidth-j+1,bmpheight),
image1.Canvas,
Rect(i-j,0,i-j+1,bmpheight));
j:=j-2;
end;
form1.Canvas.Draw(120,100,newbmp);
i:=i+2;
end;
newbmp.free;
end;
4.雨滴效果
原理:將暫存圖形的最后一條掃描線,依序搬移到可視位圖的第一條到最后一條掃描線,讓此條掃描線在屏幕上留下它的軌跡。接著再把暫存圖形的倒數第二條掃描線,依序搬移到可視位圖的第一條到倒數第二條掃描線。其余的掃描線依此類推。
程序算法:
procedure TForm1.Button3Click(Sender: TObject);
var
newbmp:TBitmap;
i,j,bmpheight,bmpwidth:integer;
begin
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmpheight:=image1.Height;
bmpwidth:=image1.Width;
for i:=bmpheight downto 1 do
for j:=1 to i do
begin
newbmp.Canvas.CopyRect(Rect(0,j-1,bmpwidth,j),
image1.Canvas,
Rect(0,i-1,bmpwidth,i));
form1.Canvas.Draw(120,100,newbmp);
end;
newbmp.free;
end;
5.百葉窗效果
原理:將放在暫存圖形的數據分成若干組,然后依次從第一組到最后一組搬移,第一次每組各搬移第一條掃描線到可視位圖的相應位置,第二次搬移第二條掃描線,接著搬移第三條、第四條掃描線.
程序算法:
procedure TForm1.Button6Click(Sender: TObject);
var
newbmp:TBitmap;
i,j,bmpheight,bmpwidth:integer;
xgroup,xcount:integer;
begin
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmpheight:=image1.Height;
bmpwidth:=image1.Width;
xgroup:=16;
xcount:=bmpheight div xgroup;
for i:=0 to xcount do
for j:=0 to xgroup do
begin
newbmp.Canvas.CopyRect(Rect
(0,xcount*j+i-1,bmpwidth,xcount*j+i),
image1.Canvas,
Rect(0,xcount*j+i-1,bmpwidth,xcount*j+i));
form1.Canvas.Draw(120,100,newbmp);
end;
newbmp.Free;
end;
6.積木效果
原理:是雨滴效果的一種變化,不同之處在于,積木效果每次搬移的是一塊圖形,而不只是一根掃描線。
程序算法:
procedure TForm1.Button7Click(Sender: TObject);
var
newbmp:TBitmap;
i,j,bmpheight,bmpwidth:integer;
begin
newbmp:= TBitmap.Create;
newbmp.Width:=image1.Width;
newbmp.Height:=image1.Height;
bmpheight:=image1.Height;
bmpwidth:=image1.Width;
i:=bmpheight;
while i>0 do
begin
for j:=10 to i do
begin
newbmp.Canvas.CopyRect(Rect(0,j-10,bmpwidth,j),
image1.Canvas,
Rect(0,i-10,bmpwidth,i));
form1.Canvas.Draw(120,100,newbmp);
end;
i:=i-10;
end;
newbmp.free;
end;
結束語
上述圖形顯示效果均已上機通過,軟件環境Delphi 3.0 ,硬件環境Pentium 100M兼容機。使用效果很好。


上一篇:利用Delphi消息處理建立類似Windows開始菜單

下一篇:Delphi中布爾類型辨析

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97在线精品国自产拍中文| 久久在线免费观看视频| 日韩久久免费电影| 91福利视频网| 国产精品高潮呻吟久久av野狼| 日韩视频永久免费观看| 久久久久国产精品www| 欧美性视频在线| 成人a在线视频| 国产成人免费91av在线| 乱亲女秽乱长久久久| 亚洲最新在线视频| 欧美电影免费观看网站| 一区二区三区无码高清视频| 亚洲男女自偷自拍图片另类| 黄色91在线观看| 日韩有码在线观看| 亚洲国产成人精品一区二区| 精品日韩视频在线观看| 国产成人精品久久久| 性欧美亚洲xxxx乳在线观看| 国产视频久久久| 伊人伊成久久人综合网站| 成人久久久久久久| 亚洲2020天天堂在线观看| 色妞色视频一区二区三区四区| 欧美亚洲国产视频小说| 日韩成人黄色av| 欧美日本国产在线| 欧美与欧洲交xxxx免费观看| 欧美成人自拍视频| 亚洲精品按摩视频| 日韩欧亚中文在线| 国产精品中文字幕久久久| 中文字幕亚洲无线码a| 欧美成人精品激情在线观看| 亚洲国产一区二区三区在线观看| 久久亚洲精品成人| 日韩在线免费av| 最新中文字幕亚洲| 日韩中文在线中文网三级| 茄子视频成人在线| 国产精品丝袜高跟| 97精品在线观看| 91夜夜揉人人捏人人添红杏| 日韩国产精品亚洲а∨天堂免| 一区二区三区在线播放欧美| 亚洲欧美中文日韩在线v日本| 91精品国产高清久久久久久| 久久精品99久久久久久久久| 欧美激情在线播放| 亚洲欧洲成视频免费观看| 亚洲精品大尺度| 97久久精品在线| 精品亚洲一区二区三区在线播放| 国产99久久精品一区二区| 国产精品91久久久| 91嫩草在线视频| 97在线免费视频| 成年无码av片在线| 精品国产乱码久久久久久婷婷| 精品亚洲永久免费精品| 亚洲全黄一级网站| 久久精品精品电影网| 91精品在线播放| 亚洲欧美激情精品一区二区| 日韩在线精品一区| 亚洲欧美中文日韩在线| 欧美黄色片视频| 日韩黄色av网站| 日韩在线精品一区| 亚洲色图美腿丝袜| 91久久综合亚洲鲁鲁五月天| 久久精品欧美视频| 欧美日韩国产色视频| 国产91精品久久久久| 国产精品入口免费视| 欧美一级视频在线观看| 国产精品久久久久久超碰| 亚洲性av网站| 日韩中文字幕欧美| 最近2019中文字幕一页二页| 亚洲最大福利视频网| 色婷婷av一区二区三区久久| 精品呦交小u女在线| 在线不卡国产精品| 亚洲午夜久久久久久久| 精品国产福利在线| 午夜精品久久久久久久男人的天堂| 亚洲午夜性刺激影院| 国内揄拍国内精品少妇国语| 亚洲图片欧美午夜| 色噜噜狠狠色综合网图区| 97超碰国产精品女人人人爽| 欧美在线精品免播放器视频| 亚洲精品久久久一区二区三区| 欧美色videos| 久久久久久伊人| 欧美性猛交xxxx黑人| 日韩中文字幕在线精品| 成人免费视频网址| 欧美中文在线免费| 成人春色激情网| 中文一区二区视频| 日韩国产高清污视频在线观看| 992tv成人免费影院| 久久青草精品视频免费观看| 大胆欧美人体视频| 日韩av电影手机在线观看| 成人a视频在线观看| 欧美激情一区二区久久久| 亚洲自拍偷拍在线| 九九热精品视频国产| 欧美激情欧美狂野欧美精品| 91精品啪在线观看麻豆免费| 国产99在线|中文| 国产精品久久激情| 日日狠狠久久偷偷四色综合免费| 欧美精品在线观看| 精品国产乱码久久久久久天美| 91亚洲永久免费精品| 97在线看免费观看视频在线观看| 97超碰国产精品女人人人爽| 最新91在线视频| 最近2019好看的中文字幕免费| 欧美多人乱p欧美4p久久| 中国日韩欧美久久久久久久久| 欧美日韩爱爱视频| 亚洲欧美在线一区| 欧美日韩国产中文字幕| 欧美大胆在线视频| 日韩免费av在线| 久久精品99久久久久久久久| 久久五月天色综合| 成人欧美一区二区三区在线湿哒哒| 青青草原成人在线视频| 狠狠久久五月精品中文字幕| 91国内免费在线视频| 欧美激情视频在线观看| 国产主播喷水一区二区| 亚洲天堂av图片| 日韩在线视频免费观看| 久久国产精品电影| 日韩一区二区在线视频| 97在线视频免费播放| 欧美日韩裸体免费视频| 精品国偷自产在线视频| 国产成人综合久久| 欧美中文字幕在线播放| 成人免费网站在线看| 亚洲天堂男人的天堂| 欧美肥臀大乳一区二区免费视频| 91精品在线一区| 日韩成人网免费视频| 欧美精品一二区| 日韩在线中文字| 亚洲美女视频网站| 国产精品人成电影在线观看| 亚洲男子天堂网| 国产精品日韩一区| 亚洲有声小说3d| 欧美黄色免费网站| 亚洲高清一二三区| 日产日韩在线亚洲欧美|