<b>用CB实现图象的特技显示</b>[VC/C++编程]
本文“<b>用CB实现图象的特技显示</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在网页、软件和游戏中,我们常常可以看到图象的各种特技显示,如中央散布、百页窗帘、右下推出等,这种动感图象显示,常常给人一种赏心好看的感受,给我们的利用程序增添了一些美感.在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的帮忙,掌握了这些属性和办法,再操纵一些程序算法,便可以随心所欲地写出各种图象特技显示的程序.在我们的利用程序开辟中,便可以加入这些图象特技显示,为我们的利用程序增添一些光彩.
以上是“<b>用CB实现图象的特技显示</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |