1,185
社区成员




unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls;
type
TForm1 = class(TForm)
img1: TImage; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 放 一个 image 控件
btn1: TButton; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 放 一个 button
procedure FormCreate(Sender: TObject);
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
procedure MyDraw;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered := True;
img1.AutoSize := True;
img1.Picture.Bitmap.LoadFromFile('1.bmp');
end;
procedure TForm1.MyDraw;
var
bf: BLENDFUNCTION;
desBmp, srcBmp: TBitmap;
rgn: HRGN;
begin
with bf do
begin
BlendOp := AC_SRC_OVER;
BlendFlags := 0;
AlphaFormat := 0;
SourceConstantAlpha := 180; // 透明度,0~255
end;
desBmp := TBitmap.Create;
srcBmp := TBitmap.Create;
try
srcBmp.Assign(img1.Picture.Bitmap);
desBmp.Width := srcBmp.Width;
desBmp.Height := srcBmp.Height;
Windows.AlphaBlend(desBmp.Canvas.Handle, 0, 0,
desBmp.Width, desBmp.Height, srcBmp.Canvas.Handle,
0, 0, srcBmp.Width, srcBmp.Height, bf);
rgn := CreateEllipticRgn(20,20, 200, 200); // 创建一个圆形区域
SelectClipRgn(srcBmp.Canvas.Handle, rgn);
srcBmp.Canvas.Draw(0, 0, desBmp);
img1.Picture.Bitmap.Assign(nil);
img1.Picture.Bitmap.Assign(srcBmp);
finally
desBmp.Free;
srcBmp.Free;
end
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
MyDraw;
end;
end.