网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.网际幕後的无名英雄----IP 原理实.
.ListView的排序.
.DOS界面下通用图形编辑软件的设计.
.C++箴言:从模板中分离出参数无关.
.哪一个奴隶不会死.
.文本模式下的GUI设计,使用tc2.0.
.C++编程技巧(一).
.Borland有一个梦,程序员的梦.
.C语言编程常见问题解答之常用函数.
.C程序开发经典实例之7.
.C语言递归.
.VC++实现Win2000下直接读写磁盘扇.
.再谈C语言中数组和指针之间的互操.
.C语言初学者入门讲座 第二讲 数据.
..
.C语言库函数(S类字母)-2.
.编辑器的改进.
.gdb基本用法.
.监视剪贴板内容.
.创建可移植的64位应用程序代码.

用CB实现图像的特技显示

发表日期:2008-3-8



  在网页、软件和游戏中,我们经常可以看到图像的各种特技显示,如中心扩散、百叶窗帘、右下推出等,这种动感图像显示,往往给人一种心旷神怡的感觉,给我们的应用程序增加了一些美感。在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的帮助,把握了这些属性和方法,再利用一些程序算法,就可以随心所欲地写出各种图像特技显示的程序。在我们的应用程序开发中,就可以加入这些图像特技显示,为我们的应用程序增加一些光彩。
上一篇:使用双缓冲技术绘制曲线图 人气:1059
下一篇:【翻译】Managed DirectX(第六章) 人气:592
浏览全部C/C++的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐