Delphi的TBitmap支持Alpha通道吗?

3

我听到有人说它不是。

然而,我创建了一个TBitmap并清除了整个区域

For I := 1 to bmp.Width do
  For J := 0 to bmp.Height do
    bmp.canvas.Pixels[I,J]:= $00000000;

然后我在位图上绘制了抗锯齿文本并将其保存到文件中。在gimp中打开它时,它会显示透明度信息。

有人对此有确定的答案吗?如果确实有效,则需要更多关于其工作原理的信息。我尝试了调整最后一个字节,但在gimp中打开时没有得到预期的结果。


使用 Pixels[] 可能会非常慢。请尝试使用 ScanLine 替代 - 您需要知道像素格式以了解每个像素有多少字节,但如果您使用的是 pf32bit,则很容易(4 字节)。请参阅 http://www.efg2.com/Lab/ImageProcessing/Scanline.htm。 - David
2个回答

17

它确实可以,但是你需要设置

bmp.PixelFormat := pf32bit;

+1 很好 :) 这支持哪个版本的 VCL? - Wolf
我不是100%确定,但我认为这已经在D7中了。可能更早之前也有。 - Ondrej Kelle

3

Delphi的TBitmap只是Windows BITMAP对象的一个包装器。因此,它确实支持alpha通道,但显然您必须适当地设置PixelFormat属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接