实例16 图像的特效显示

<h3>实例16 图像的特效显示 </h3>2009年10月13日<br/><br/>  第2章 图形图像处理实例 <br/><br/>  实例16 图像的<em>特效</em>显示 <br/><br/>  在Windows处理图像的API函数中,Bitblt()函数是非常重要而且是常用的函数之一。运用这个函数,可以实现图像的旋转和动态显示等效果。如果想在图像处理上有所突破,也必须熟练掌握Bitblt()函数。本实例实现的功能是以门帘效果来显示一幅BMP图像 <br/><br/>  向窗体上添加一个TImage<em>组件</em>、一个OpenPictureDialog<em>组件</em>、一个TPaintBox<em>组件</em>和一个TButton<em>组件</em>,TImage<em>组件</em>充当原图片显示的载体,TPaintBox<em>组件</em>用来显示图像的<em>特效</em>。添加<em>组件</em>后的窗体如图所示。 <br/><br/>  <a style="CURSOR: pointer" target="_blank"><br/><br/>  <img οnclick="window.open('http://b26.photo.store.qq.com/http_imgload.cgi?/rurl4_b=1c40bf08bd3e3162af563e2a69a4d3eb7fd0a48a607b6290c1fc0d15ea21e23d3d218b4d9cbb22d8254f92ba5ab7006f788de2b00c686f1ec69aa5716f5f64eee93527028dd62ec8f658732424f9a5a3d4e7aedc')" border="0" οnerrοr="this.src='http://cache.soso.com/img/blog/p1.gif'" src="http://b26.photo.store.qq.com/http_imgload.cgi?/rurl4_b=1c40bf08bd3e3162af563e2a69a4d3eb7fd0a48a607b6290c1fc0d15ea21e23d3d218b4d9cbb22d8254f92ba5ab7006f788de2b00c686f1ec69aa5716f5f64eee93527028dd62ec8f658732424f9a5a3d4e7aedc" width="411" οnlοad="addjustimg(this)" height="305"/><br/><br/>  </a> <br/><br/>  在显示图像的过程中,如果把原始图像分成几个部分,对每一个部分都逐步放大其显示范围以接近各部分图像的宽度,那么运行时可实现门帘式的显示效果。改变循环语句的步长或者改变Sleep()函数中的参数就可以改变程序运行的时间。 <br/><br/>  门帘效果的实现代码如下: <br/><br/>  unit Unit1; <br/><br/>  interface <br/><br/>  uses <br/><br/>  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, <br/><br/>  Dialogs, StdCtrls, ExtCtrls, ExtDlgs; <br/><br/>  type <br/><br/>  TForm1 = class(TForm) <br/><br/>  Image1: TImage; <br/><br/>  btnOpen: TButton; <br/><br/>  Image2: TImage; <br/><br/>  OpenPictureDialog1: TOpenPictureDialog; <br/><br/>  PaintBox1: TPaintBox; <br/><br/>  procedure btnOpenClick(Sender: TObject); <br/><br/>  procedure FormCreate(Sender: TObject); <br/><br/>  private <br/><br/>  { Private declarations } <br/><br/>  public <br/><br/>  { Public declarations } <br/><br/>  end; <br/><br/>  var <br/><br/>  Form1: TForm1; <br/><br/>  implementation <br/><br/>  {$R *.dfm} <br/><br/>  procedure TForm1.btnOpenClick(Sender: TObject); <br/><br/>  var <br/><br/>  i,j:Integer; <br/><br/>  hDC1:HDC; <br/><br/>  hDC2:HDC; <br/><br/>  begin <br/><br/>  if(self.OpenPictureDialog1.Execute()) then <br/><br/>  begin <br/><br/>  Image1.Picture.Bitmap.LoadFromFile(OpenPictureDialog1.FileName); <br/><br/>  Image1.Visible:=true; <br/><br/>  hDC1:=Image1.Canvas.Handle; <br/><br/>  hDC2:=PaintBox1.Canvas.Handle; <br/><br/>  for i:=0 to (Image1.Width div 10) do <br/><br/>  begin <br/><br/>  for j:=0 to 10 do <br/><br/>  begin <br/><br/>  BitBlt(hDC2,j*Image1.Width div 10,0,i+2,Image1.Height, <br/><br/>  hDC1,j*Image1.Width div 10,0,SRCCOPY); <br/><br/>  Sleep(10); <br/><br/>  end; <br/><br/>  end; <br/><br/>  end; <br/><br/>  end; <br/><br/>  procedure TForm1.FormCreate(Sender: TObject); <br/><br/>  begin <br/><br/>  self.OpenPictureDialog1.Filter := 'BMP files (*.bmp)|*.bmp'; <br/><br/>  end; <br/><br/>  end. <br/><br/>  保存文件,然后按F9键运行程序。在程序运行的初始画面上单击“打开”按钮,弹出一个提示用户选择图像文件的“打开”对话框。确认选择后,在窗体的TPaintBox<em>组件</em>上就会显示图像的门帘效果,<em>特效</em>过程中间的显示如图所示 <br/><br/>  <a style="CURSOR: pointer" target="_blank"><br/><br/>  <img οnclick="window.open('file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-1492.png')" border="0" οnerrοr="this.src='http://cache.soso.com/img/blog/p1.gif'" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ksohtml/wps_clip_image-1492.png" width="321" οnlοad="addjustimg(this)" height="291"/><br/><br/>  </a> <br/><br/>  在BitBlt()函数的参数中,特别值得一提的是参数dwRop,它提供了源图与目标图的15种组合方式。但是一般都采用SRCCOPY,即把源图复制给目标图。读者如果可以灵活运用这个参数,就可以制作出更加丰富多彩的图像<em>特效</em> <br/><br/><script>
loadPreviewComment('17179567009214623600','http://user.qzone.qq.com/644979311/blog/1255444139',1,1,'main',2);
</script><h5 id="preview_tip">评论</h5>
<div id="geting_new" class="morepl preview_comment">正在加载评论......</div>
<div id="footer_br"><br/></div>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值