用CB实现图像的特技显示

2016-02-19 15:31 0 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的用CB实现图像的特技显示,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - 编程语言 】

  在网页、软件和游戏中,我们经常可以看到图像的各种特技显示,如中心扩散、百叶窗帘、右下推出等,这种动感图像显示,往往给人一种赏心悦目的感觉,给我们的应用程序增加了一些美感。在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); 

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  在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.tulaoshi.com/n/20160219/1609823.html

延伸阅读
PDF介绍 PDF是“Portable Document Format 可移植文档格式”的缩写,它是Adobe公司开发的一种电子文档格式,已经成为国际通用的电子文档交换事实标准。PDF文件可以在各种平台下阅读、编辑、发布。该文件格式支持字体、图像、甚至任何附件的嵌入。 Adobe公司提供了两种软件用于处理PDF文档,分别是Acrobat及Acrobat Reader:前者功能强...
[文章导读] Java Applet常用来显示存储在GIF文件中的图像 Java Applet常用来显示存储在GIF文件中的图像。Java Applet装载GIF图像非常简单,在Applet内使用图像文件时需定义Image对象。多数Java Applet使用的是GIF或JPEG格式的图像文件。Applet使用getImage方法把图像文件和Image对象联系起来。 Graphics类的drawImage方法用来显示Image对象。...
在浏览网页时,各种各样制作精美的动态按钮常常令人惊羡不已。这种按钮平常默默无闻,当鼠标经过时,立即一跃而出,在鼠标变为手形的同时,图形也变得更加亮丽,有的还发出特有声音,将你的注意力瞬间抓了过去;而当鼠标移开之后,一切又恢复原样,以免分散你对新焦点的注意。如果我们能用C++ Builder实现这种效果,那么一定会给所开发的应...
标签: Web开发
用js实现select对div的隐藏与显示   !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" html head meta http-equiv="Content-Type" content="text/html; charset=gb2312" title无标题文档/title /head body script type="text/...
用vc++写console程序时,整天对着黑纸白字的屏幕,感觉很郁闷吧?很多人想用CONIO.H/GRAPHICS.H中的一些函数来实现,却发现VC++根本没有这些头文件。当然了CONIO.H/GRAPHICS.H是BORLAND TC/BC专有的头文件,所以vc++中根本没有这些文件。把这两个头文件COPY过来,然后用??答案当然是否定的。其实VC++中也有相关的函数来实现console彩色文...

经验教程

323

收藏

78
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部