用CB实现图像的绝技显示
在网页、软件和游戏中,我们常常可以看到图像的各类绝技显示,如中心扩散、百叶窗帘、右下推出等,这种动感图像显示,往往给人一种赏心好看的感受,给我们的应用措施增加了一些美感。在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的辅佐,把握了这些属性和要领,再操作一些措施算法,就可以随心所欲地写出各类图像绝技显示的措施。在我们的应用措施开拓中,就可以插手这些图像绝技显示,为我们的应用措施增加一些色泽。