Поддерживает ли delphi TBitmap альфа-канал

Я слышу, как люди говорят, что это не так.

Однако я создал TBitmap и очистил всю область,

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

Затем я нарисовал сглаженный текст на растровом изображении и сохранил его в файл. При открытии в gimp он показывает информацию о прозрачности.

Есть ли у кого-нибудь окончательный ответ по этому поводу, и если это сработает, то дополнительную информацию о том, как это работает? Я пробовал поиграть с последним байтом, но не получаю ожидаемых результатов, когда открываю его в gimp.


person Tim    schedule 13.01.2011    source источник
comment
Использование Pixels[] может быть очень медленным. Вместо этого попробуйте использовать ScanLine - вам нужно знать формат пикселей, чтобы знать, сколько байтов на пиксель, но если вы используете pf32bit, это просто (4 байта). См. efg2.com/Lab/ImageProcessing/Scanline.htm   -  person David    schedule 14.01.2011


Ответы (2)


Это так, но вы должны установить

bmp.PixelFormat := pf32bit;
person Ondrej Kelle    schedule 13.01.2011
comment
+1 Отлично :) С какой версией VCL это поддерживается? - person Wolf; 22.05.2014
comment
Я не уверен на 100%, но думаю, что это уже было в D7. Наверное, и раньше. - person Ondrej Kelle; 22.05.2014

Delphi TBitmap - это просто оболочка для объекта Windows BITMAP. Итак, да, он поддерживает альфа-каналы, но очевидно, что вы должны установить свойство PixelFormat соответствующим образом.

person David Heffernan    schedule 13.01.2011