用CB实现图像的特技显示
2008-02-23 05:25:55来源:互联网 阅读 ()
在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的帮助,掌控了这些属性和方法,再利用一些程式算法,就能够随心所欲地写出各种图像特技显示的程式。在我们的应用程式研发中,就能够加入这些图像特技显示,为我们的应用程式增加一些光彩。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇: C语言图像处理方法
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash