用CB实现图像的特技显示

用CB实现图像的特技显示,第1张

用CB实现图像的特技显示,第2张

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

在C++ Builder中创建新项目,然后在窗体上添加一个图像控件,将其Picture属性设置为bmp图像,并将图像控件的大小调整为与图像的大小相同。在窗体上添加两个Button控件,并将Button1的Caption属性设置为“中心扩散”,将Button2的Caption属性设置为“威尼斯百叶窗”。

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

将以下代码添加到Button1的OnClick事件中:

void _ fast call t form 1::button 1 click(to object * Sender)
{
int I,left,top,width,height
Left = Image1-> Left;
Top = Image1-> Top;
Width = Image1-> Width;
Height = Image1-> Height;
for(I = 0;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提供的矩形复制方法,在不同的Canvas之间复制图像。该方法声明如下:

void _ fast call copy rect(const Windows::TRect & & Dest,tcan vas * Canvas,const Windows::TRect & & Source);

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

将以下代码添加到Button2的OnClick事件中:

void _ fast call t form 1::button 2 click(to object * Sender)
{
int inum,icount,I,j;
Graphics::tbit map * pbit map = new Graphics::tbit map();
pbit map-> Height = Image1-> Height;
pbit map-> Width = Image1-> Width;
inum = 16;//这是百叶窗的叶片数
icount = pbit map-> height/inum;
for(I = 1;i < icounti++)
for(j = 0;j pbit map-> Canvas-> copy Rect(Rect(0,icount*j + i - 1,pBitmap->Width,icount*j + i),Image1->Canvas,Rect(0,icount*j + i - 1,pBitmap->Width,icount * j+I));
form 1-> Canvas-> Draw(Image1-> Left,Image1->Top,pbit map);
}
删除pBitmap
}

按F9运行上面的程序,得到想要的“威尼斯百叶窗”效果。

图像控件还提供了一些其他有用的属性和方法。可以充分利用C++ Builder的帮助,掌握这些属性和方法,然后利用一些程序算法,随意编写各种图像特技显示程序。在我们的应用程序开发中,我们可以添加这些图像特效来为我们的应用程序增添一些光彩。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 用CB实现图像的特技显示

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情