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