Delphi意外地使用了Image的alpha通道

时间:2016-03-01 07:04:35

标签: delphi canvas alpha-transparency

我有一个TImage,我加载了一个透明的PNG。大卫暗示我如何给它一个位图来吸引:

var
  Png: TPngImage;
  Bmp: TBitmap;
begin
  Png := TPngImage.Create;
  Bmp := TBitmap.Create;
  try
    Png.LoadFromResourceName(HInstance, 'background');
    Bmp.Assign(Png);
    Image1.Picture.Assign(Bmp);
  finally
    Png.Free;
    Bmp.Free;
  end;

  with Image1, Canvas do
  begin
    Pen.Width := 7;
    Pen.Color := clBlue;
    MoveTo(0, 0);
    LineTo(150, 100);
  end;
end;

我可以在图像的画布上画画,但我为笔定义的颜色会被忽略;相反,所有线条都呈灰色。我意识到我必须绘制alpha通道而不是RGB通道,我可以通过在下面放置另一个图像来确认。 (我得到的灰色是底层TForm的颜色。)

enter image description here

钟面是不透明的,周围的区域是透明的,可让您在下面的图像上看到城市景观。因此,不要在时钟上握手,而是手变得透明。 (我伸出手去了已经透明的区域,但它似乎没有改变任何东西。)

为什么我在alpha通道中绘图,我怎样才能在RGB通道中绘制Delphi?

更新
我上传了一个最小的项目,可以让您重现问题here

0 个答案:

没有答案