image位一个地图,想在上面画个半透明的圆,怎么实现半透明圆
解决方案 »
- 怎样在点击按钮2以后,就能够停止点击按钮1后正在进行的工作?
- 请问这样的问题怎么解决
- 如何執行dos command的ftp???
- 高分相送!用Timer事件接受串口数据 后退出系统弹出错误!
- 请教调用VC创建的DLL的相关问题
- 有高手吗!救急呀!数据库操作方面的!看谁可以帮我解决将感谢不尽!
- sql 的update问题,树结构的运算
- 各位大哥,小妹做了一个小型的管理系统,但是不能在别的机子上运行,help me!!
- DComConnection
- 欲与Delphi高手交友
- XE4和DevExpressVCL_12.2.6之间的怪事,求解
- xe5之安卓的RunTime.getRunTime.Exec执行外部命令需要特殊权限吗?
unit Unit1;interfaceuses
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.