在应用程序中引入图片淡入淡出效果,可以让用户界面更加美观。在Delphi中可以调用Windows的API函数AlphaBlend来实现图片的淡入淡出效果,既保证速度,又很简单。
![]()
向窗体上添加一个TImage组件和一个TButton组件,TImage充当图片显示的载体, TButton组件用于控制淡入效果和淡出效果的转换。添加组件后的窗体如图2-18所示。

图2-18 添加组件后的窗体
![]()
程序首先定义一个TBitmap类型的全局对象Bitmap,在程序运行过程中,由这个全局对象存储图像文件,在窗体的初始化过程中添加初始化Bitmap对象的代码如下:
procedure TfrmMain.FormCreate(Sender: TObject);
begin
Bitmap:=TBitmap.Create;
Bitmap.LoadFromFile('鸟.bmp');
end;
在程序运行过程中,如果用户单击第1次单击TButton组件,那么它显示文本就会从“淡入”改变为“淡出”。再次单击这个TButton组件,那显示文本又会回到“淡入”。依次类推,单击“淡入”按钮就会实现图像的淡入效果,响应代码如下:
procedure TfrmMain.Button1Click(Sender: TObject);
var
sBlendFunction: BlendFunction;
i: byte;
begin
if Button1.Caption='淡入' then
begin
Button1.Caption:='淡出';
with sBlendFunction do
begin
BlendOp := AC_SRC_OVER;
BlendFlags := 0;
AlphaFormat := 0
end;
for i := 0 to 51 do
begin
sBlendFunction.SourceConstantAlpha:= i * 5;
Windows.AlphaBlend(Image1.Canvas.Handle,0,0,Image1.Width,
Image1.Height,Bitmap.Canvas.Handle,0,0,
Bitmap.Width,Bitmap.Height,sBlendFunction);
sleep(50);
Image1.Refresh;
end;
end
else
begin
//图片的淡出效果,此处省略了
end;
end;
程序首先会填充一个BlendFunction结构,这个结构是AlphaBlend的使用中最重要的参数。它有4个变量,其中BlendOP是混合方式,当前只有AC_SRC_OVER一种。BlendFlags必须为0。SourceConstantAlpha控制画面的透明度,为0时,完全透明;为255时,完全不透明,并且逐渐变化。AlphaFormat为AlphaBlend函数中源句柄和目的句柄的格式,一般指定为0。然后程序就会调用循环中的AlphaBlend函数来设置TImage组件上显示图像的透明度,并且利用Sleep函数做延时效果。最后在每次循环中都要加入TImage组件的Refresh方法来刷新淡入的效果。
图像的淡出效果与淡入效果的原理大体相同,不再赘述。
| Visual C++编程窃取QQ密码 | 12-08 | |
| 编程实现重起网卡等设备 | 12-07 | |
| 一个邮件群发的Delphi代码! | 12-06 | |
| Delphi下Internet的编程技巧 | 11-20 | |
| Delphi黑客编程-如何映射虚拟盘 | 11-15 | |
| 用DETOURS库获取NT管理员权限 | 11-08 | |
| 一篇关于vb代码质量提高的文章 | 10-30 | |
| 解析Asp.net木马文件操作 | 10-04 | |
| 盗QQ源码 | 10-01 | |
| 如何映射肉鸡磁盘(Delphi黑客编程 | 09-24 | |
| 打造无DLL版穿墙Downloader(Delp | 09-22 | |
| 调用指定的Windows程序(Delphi编 | 09-19 | |