知识大全 Delphi中的图形显示技巧
Posted 图形
篇首语:一身转战三千里,一剑曾百万师。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi中的图形显示技巧相关的知识,希望对你有一定的参考价值。
程序开发小技巧:Delphi中的图形显示技巧 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
目前在许多学习软件 游戏光盘中 经常会看到各种图形显示技巧 凭著图形的移动 交错 雨滴状 百页窗 积木堆叠等显现方式 使画面变得更为生动活泼 更能吸引观众 本文将探讨如何在Delphi中实现各种图形显示技巧 一 基本原理 在Delphi中 实现一副图像的显示是非常简单的 只要在Form中定义一个TImage组件 设置其picture属性 然后选择任何有效的 ICO BMP EMF或 WMF文件 进行Load 所选文件就显示在TImage组件中了 但这只是直接将图形显示在窗体中 毫无技巧可言 为了使图形显示具有别具一格的效果 可以按下列步骤实现 定义一个TImage组件 把要显示的图形先装入到TImage组件中 也就是说 把图形内容从磁盘载入内存中 作为图形缓存 创建一新的位图对象 其尺寸跟TImage组件中的图形一样 利用画布(Canvas)的CopyRect功能(将一个画布的矩形区域拷贝到另一个画布的矩形区域) 使用一定技巧 动态形成位图文件内容 然后在窗体中显示位图 二 实现方法 下面介绍各种图形显示技巧 推拉效果 将要显示的图形由上 下 左 右方向拉进屏幕内显示 同时将屏幕上原来的旧图覆蓋掉 此种效果可分为四种 上拉 下拉 左拉 右拉 但原理都差不多 以上拉效果为例 原理 首先将放在暂存图形的第一条水平线搬移至要显示的位图的最后一条 接着再将暂存图形的前两条水平线 依序搬移至要显示位图的最后两条水平线 然后搬移前三条 前四条 直到全部图形数据搬完为止 在搬移的过程中即可看到显示的位图由下而上浮起 而达到上拉的效果 程序算法 procedure TForm Button Click(Sender: TObject); var newbmp: TBitmap; i bmpheight bmpwidth:integer; begin newbmp:= TBitmap Create; newbmp Width:=image Width; newbmp Height:=image Height; bmpheight:=image Height; bmpwidth:=image Width; for i:= to bmpheight do begin newbmp Canvas CopyRect(Rect ( bmpheight-i bmpwidth bmpheight) image Canvas Rect( bmpwidth i)); form Canvas Draw( newbmp); end; newbmp free; end; 垂直交错效果 原理 将要显示的图形拆成两部分 奇数条扫描线由上往下搬移 偶数条扫描线则由下往上搬移 而且两者同时进行 从屏幕上便可看到分别由上下两端出现的较淡图形向屏幕中央移动 直到完全清楚为止 程序算法 procedure TForm Button Click(Sender: TObject); var newbmp:TBitmap; i j bmpheight bmpwidth:integer; begin newbmp:= TBitmap Create; newbmp Width:=image Width; newbmp Height:=image Height; bmpheight:=image Height; bmpwidth:=image Width; i:= ; while i< =bmpheight do begin j:=i; while j > do begin newbmp Canvas CopyRect(Rect( j- bmpwidth j) image Canvas Rect( bmpheight-i+j- bmpwidth bmpheight-i+j)); newbmp Canvas CopyRect(Rect ( bmpheight-j bmpwidth bmpheight-j+ ) image Canvas Rect( i-j bmpwidth i-j+ )); j:=j- ; end; form Canvas Draw( newbmp); i:=i+ ; end; newbmp free; end; 水平交错效果 同垂直交错效果原理一样 只是将分成两组后的图形分别由左右两端移进屏幕 程序算法从略 雨滴效果 原理 将暂存图形的最后一条扫描线 依序搬移到可视位图的第一条到最后一条扫描线 让此条扫描线在屏幕上留下它的轨迹 接着再把暂存图形的倒数第二条扫描线 依序搬移到可视位图的第一条到倒数第二条扫描线 其余的扫描线依此类推 程序算法 procedure TForm Button Click(Sender: TObject); var newbmp:TBitmap; i j bmpheight bmpwidth:integer; begin newbmp:= TBitmap Create; newbmp Width:=image Width; newbmp Height:=image Height; bmpheight:=image Height; bmpwidth:=image Width; for i:=bmpheight downto do for j:= to i do begin newbmp Canvas CopyRect(Rect( j- bmpwidth j) image Canvas Rect( i- bmpwidth i)); form Canvas Draw( newbmp); end; newbmp free; end; 百叶窗效果 原理 将放在暂存图形的数据分成若干组 然后依次从第一组到最后一组搬移 第一次每组各搬移第一条扫描线到可视位图的相应位置 第二次搬移第二条扫描线 接着搬移第三条 第四条扫描线 其余扫描线依此类推 程序算法 procedure TForm Button Click(Sender: TObject); var newbmp:TBitmap; i j bmpheight bmpwidth:integer; xgroup xcount:integer; begin newbmp:= TBitmap Create; newbmp Width:=image Width; newbmp Height:=image Height; bmpheight:=image Height; bmpwidth:=image Width; xgroup:= ; xcount:=bmpheight div xgroup; for i:= to xcount do for j:= to xgroup do begin newbmp Canvas CopyRect(Rect ( xcount*j+i- bmpwidth xcount*j+i) image Canvas Rect( xcount*j+i- bmpwidth xcount*j+i)); form Canvas Draw( newbmp); end; newbmp Free; end; cha138/Article/program/Delphi/201311/8405相关参考
Delphi中的图形显示技巧[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 雨滴效果 原
Delphi中的图形显示技巧[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 概述 目前在
DELPHI基础教程:Delphi图形图像编程(一)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
DELPHI基础教程:Delphi图形图像编程(一)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
DELPHI基础教程:Delphi图形图像编程(一)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
DELPHI基础教程:Delphi图形图像编程(二)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
DELPHI基础教程:Delphi图形图像编程(二)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
DELPHI基础教程:Delphi图形图像编程(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
用Delphi打造图形界面的Ping程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 摘 要本
ASP.NET中Visio图形的控制与数据显示 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 背