• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

用C++Builder实现图像的特技显示

发布: 2007-7-04 20:47 | 作者: admin | 来源:  网友评论 | 查看: 121次 | 进入软件测试论坛讨论

领测软件测试网 用C++Builder实现图像的特技显示

[返回]
中国计算机报2001年第40期

用C++Builder实现图像的特技显示

张 卿

  在网页、软件和游戏中,我们经常可以看到图像的各种特技显示,如中心扩散、百叶窗帘、右下推出等,这种动感图像显示,往往给人一种赏心悦目的感觉,给我们的应用程序增加了一些美感。在C++ Builder中,我们可很容易地实现这些功能。下面以一个具体的例子,介绍实现中心扩散和百叶窗帘两种显示技巧,并说明在C++ Builder中处理图像的基本方法。

  在C++ Builder中新建一个工程,然后在窗体上添加一个Image图像控件,把它的Picture属性设置为一幅bmp图像,调节Image控件尺寸与图像的尺寸大小相同。再在窗体上添加两个Button控件,把Button1的Caption属性设置为“中心扩散”、Button2的Caption属性设置为“百叶窗帘”。

  1. 对于“中心扩散”的实现,我们利用一定的算法,通过一定的循环次数,每次显示图像的一部分,从图像的中心位置开始显示,直到显示出图像的整体。

  在Button1的OnClick事件中加入以下代码:

  void _fastcall TForm1::Button1Click(TObject Sender)

  {

   int i,left,top,width,height;

   left = Image1->Left;

   top = Image1->Top;

   width = Image1->Width;

   height = Image1->Height;

  for (i = 0; i <= width; i++){

   //通过图像的坐标选定图像的一部分

   Image1->Left = left + (width - i)/2;

   Image1->Top = top + height/2 - iheight/width/2;

   Image1->Width = i;

   Image1->Height = iheight/width;

   Image1->Refresh();

   }

  } 

  2.对于“百叶窗帘”,我们可利用画布(Canvas)提供的矩形拷贝(CopyRect)方法在不同画布之间进行图像复制来实现,该方法声明如下:

  void _fastcall CopyRect(const Windows::TRect &&Dest, TCanvas Canvas, const Windows::TRect &&Source); 

  把参数Canvas指定的源画布矩形区域Source复制到目标画布Dest的矩形区域。利用这种方法,再通过一定的算法,即可实现“百叶窗帘”的特技显示。

  在Button2的OnClick事件中加入以下代码:

  void _fastcall TForm1::Button2Click(TObject Sender)

  {

   int inum,icount,i,j;

   Graphics::TBitmap pBitmap = new Graphics::TBitmap();

   pBitmap->Height = Image1->Height;

   pBitmap->Width = Image1->Width;

   inum =16; //这是百叶窗的叶数

   icount = pBitmap->Height /inum;

   for (i = 1; i < icount; i++)

   for (j = 0; j <= inum; j++){

   pBitmap->Canvas->CopyRect(Rect(0,icountj + i - 1, pBitmap->Width,

  icountj + i), Image1->Canvas, Rect(0, icountj + i - 1,

  pBitmap->Width, icountj + i));

  Form1->Canvas->Draw(Image1->Left,Image1->Top,pBitmap);

   }

   delete pBitmap;

  }

  按F9运行以上程序,即可获得所需要的“百叶窗帘”效果,如图所示。

  Image图像控件还提供了另外一些很有用的属性和方法,大家可以充分利用C++ Builder的帮助,掌握了这些属性和方法,再利用一些程序算法,就可以随心所欲地写出各种图像特技显示的程序。在我们的应用程序开发中,就可以加入这些图像特技显示,为我们的应用程序增加一些光彩。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网