AlphaBlend 是指定图像混合透明的函数, 在 Graphics、GraphUtil、RibbonStyleActnCtrls 单元用到.
下面的测试是把一张图片显示在窗体, 并可以调整透明度.
本例效果图:
代码文件:
下面的测试是把一张图片显示在窗体, 并可以调整透明度.
本例效果图:
代码文件:
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls; type
TForm1 = class(TForm)
TrackBar1: TTrackBar;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure FormPaint(Sender: TObject);
end; var
Form1: TForm1; implementation {$R *.dfm} var
bit: TBitmap; procedure TForm1.FormCreate(Sender: TObject);
begin
bit := TBitmap.Create;
bit.LoadFromFile('c:\temp\Test.bmp'); TrackBar1.Min := ;
TrackBar1.Max := ;
TrackBar1.Position := ; DoubleBuffered := True;
end; procedure TForm1.FormDestroy(Sender: TObject);
begin
bit.Free;
end; procedure TForm1.FormPaint(Sender: TObject);
var
BlendFunc: TBlendFunction;
begin
BlendFunc.BlendOp := AC_SRC_OVER;
BlendFunc.BlendFlags := ;
BlendFunc.SourceConstantAlpha := TrackBar1.Position; if bit.PixelFormat = pf32bit then
BlendFunc.AlphaFormat := AC_SRC_ALPHA
else
BlendFunc.AlphaFormat := ; Windows.AlphaBlend(Canvas.Handle, {目标 DC}
, , bit.Width, bit.Height, {目标位置与大小}
bit.Canvas.Handle, {源 DC}
, , bit.Width, bit.Height, {源位置与大小}
BlendFunc {透明相关的结构}
);
end; procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Repaint;
end; end.