gpt4 book ai didi

delphi - 在图层中绘制一个透明的椭圆

转载 作者:行者123 更新时间:2023-12-01 19:26:50 26 4
gpt4 key购买 nike

我的表单上有一个 TImgView32(名为 CityMap),并在其上加载了图像。现在,我创建一个图层 (TBitmapLayer) 并使用 TBitmap32 变量的 Canvas.Ellipse 绘制一个圆,如下所示:

procedure TfrmMain.Button1Click(Sender: TObject);
var
tmpBmp: TBitmap32;
tmpBL: TBitmapLayer;
begin
tmpBL:= TBitmapLayer.Create(CityMap.Layers);

tmpBmp:= TBitmap32.Create;

with tmpBmp do
begin
//Clear;
SetSize(50, 50);
Canvas.Brush.Color := clYellow;
Canvas.Brush.Style:= bsSolid;
Canvas.Pen.Color := clBlue;
Canvas.Pen.Width := 2;
Canvas.Ellipse(Rect(0, 0, 50, 50));
end;

with tmpBL do
begin
Scaled:=true;
Bitmap.DrawMode:=dmBlend;
tmpBL.Bitmap:=(tmpBmp);
//tmpBmp.DrawTo(tmpBL.Bitmap, 0, 0); This line doesn't work! So using above line instead
end;

//...

end;

结果是这样的:

Current result

如您所见,问题在于那个烦人的黑色矩形。如何创建这样的结果:

desired result

最佳答案

TBitmap32 图像的 DrawMode 属性使用 dmTransparent 绘制模式:

procedure TForm1.Button1Click(Sender: TObject);
var
Bitmap: TBitmap32;
Layer: TBitmapLayer;
begin
Layer := TBitmapLayer.Create(CityMap.Layers);

Bitmap := TBitmap32.Create;
Bitmap.DrawMode := dmTransparent;
Bitmap.SetSize(50, 50);
Bitmap.Canvas.Brush.Color := clYellow;
Bitmap.Canvas.Brush.Style:= bsSolid;
Bitmap.Canvas.Pen.Color := clBlue;
Bitmap.Canvas.Pen.Width := 2;
Bitmap.Canvas.Ellipse(Rect(0, 0, 50, 50));

Layer.Scaled := True;
Layer.Bitmap := Bitmap;
...
end;

关于delphi - 在图层中绘制一个透明的椭圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18418513/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com