![]()
程序代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TfrmMain = class(TForm)
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
Bitmap:TBitmap;
implementation
{$R *.dfm}
procedure TfrmMain.Button1Click(Sender: TObject);
var
sBlendFunction: BlendFunction;
// 这是Alpha混合时需要的一个类型参数
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 // 共有51帧
begin
sBlendFunction.SourceConstantAlpha:= i * 5;
// 从全透明到不透明,每次渐变5级
Windows.AlphaBlend(Image1.Canvas.Handle,0,0,Image1.Width,
Image1.Height,Bitmap.Canvas.Handle,0,0,
Bitmap.Width,Bitmap.Height,sBlendFunction);
// Alpha混合处理
sleep(50);
// 延时50毫秒,适当的延时可让效果看起来更逼真
Image1.Refresh;
// 一定要实时刷新Image1,才能看出变化
end;
end
else
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,
1,1,sBlendFunction);
sleep(50);
Image1.Refresh;
end;
end;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
Bitmap:=TBitmap.Create;
Bitmap.LoadFromFile('鸟.bmp');
end;
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
Bitmap.Free;
end;
end.
![]()
保存文件,然后按F9键运行程序。在程序运行的初始画面上单击“淡入”按钮,TImage组件上就会显示图像的淡入效果,淡入效果的过程如图2-19所示。
淡入过程结束后的程序运行结果如图2-20所示。

图2-19 淡入效果过程 图2-20 程序运行结果
单击“淡出”按钮,可以观看图像的淡出效果。
![]()
通过本实例,读者可以学习到如何设置图像的透明效果。稍加扩展,AlphaBlend函数不但可以实现图像的淡入淡出效果,还可以实现图像的透明叠加效果。
| 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 | |