在图层中绘制透明椭圆

SAM*_*Pro 1 delphi layer graphics32

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

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;
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

目前的结果

如你所见,问题是恼人的黑色矩形.如何创建这样的结果:

期望的结果

TLa*_*ama 5

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

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;
Run Code Online (Sandbox Code Playgroud)