我有一个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的颜色。)
钟面是不透明的,周围的区域是透明的,可让您在下面的图像上看到城市景观。因此,不要在时钟上握手,而是手变得透明。 (我伸出手去了已经透明的区域,但它似乎没有改变任何东西。)
为什么我在alpha通道中绘图,我怎样才能在RGB通道中绘制Delphi?
更新
我上传了一个最小的项目,可以让您重现问题here。