用CB实现图像的特技显示

文章作者 100test 发表时间 2008:01:04 13:01:06
来源 100Test.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).

  把参数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).
}
0delete pBitmap.
}

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

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

相关文章


Acce 如何维护表的参照完整性
实现窗体的渐变背景
怎样在ACCE 表中隐藏列
恢复从Acce 2000、Acce 2002或Acce 2003数据库中删除表的方法
用CB实现图像的特技显示
使用双缓冲技术绘制曲线图
用C Builder对图像进行特殊效果处理
FAQ:用代码定义字段AllowZeroLength和Required属性
怎样在表中插入、删除和移动字段
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛