china.com
主页
新闻
体育
游戏
文化
教育
健康
财经
科技
旅游
军事
娱乐
商贸
  科技动态 硬件广场 下载基地 网络教室 网络冲浪 科学博览 移动时代 手机上网 桌面壁纸 科技商情  


图形的特殊显示效果

2000-09-06 11:18:38

  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;

  本程序只是一个简单的图像显示例子,其它图像显示方法,如:拉幕式、百叶窗式、马赛克式、中心向外扩展式均可以由算法实现。

  摘自《赛迪网》 杨波/文

404 Not Found

404 Not Found


nginx


科技检索


中华网推荐

  • 1000名医生在线咨询

  • 中国足球队官方网站

  • 鸦片玫瑰(新版)

  • 精选股票天地

  • 闪光的flash教程

  • 中华网汽车世界

  • 为你的爱情出谋划策

  • 网文精选——野百合集

  • 世界文化遗产在中国

  • 历届香港小姐风姿集



  •  


    网络教室编辑信箱
    版权声明 | 本站检索 | 联系方法 | 刊登广告 | 使用说明 | 关于中华网 | 豁免条款

    版权所有 中华网