![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Power Draw прозрачность [Delphi, Windows]
D-Man © (2004-12-16 13:43:00)Такая проблема:
Хочу чтобы картинка рисовалась с прозрачным цветом фиолетовым, т.е. FFFF00FF.
Делаю так:
AGFImageList1.AddFromFile('test.bmp',256,256,256,256,D3DFMT_A1R5G5B5);
AGFImageList1.Images[0].TransparentColor := $FFFF00FF;
.....
PowerDraw1.TextureMap(AGFImageList1.Images[0], pBounds4(0,0,256,256), cColor1($FFFFFFFF), tPattern(0), effectSrcAlpha);
В результате она рисуется как есть, без прозрачности. Самое
интересное, что если задать TransparentColor любой кроме того в
котором красная компонента больше нуля, то все работает?! Я уже
голову сломал, но не понял почему так происходит.
Как сделать нормальную прозрачность для bmp?
Darth (2004-12-17 00:37:00) [1]Сколько памяти жрет картинка описывает формат. Если 16 бит, то явно меньше чем 32 :)
D-Man (2004-12-17 00:06:00) [2]Вот черт! Придется все-таки tga стряпать наверно
Dic (2004-12-16 23:27:00) [3]TGA весит больше только в фйле. При загрузке в видеопамять нет никакой разницы между TGA и BMP (в твоём случае 16 бит на пиксель).
Да и по скорости рендеринга нет особых отличий. А все последние советы касаются только PD 2.41, в PD 3 этого нет.
Darth (2004-12-16 22:30:00) [4]Вообще транспарентколор это что-то новое в ПД :)
Делай так:
AGFImageList1.Images[0].Set1bitAlpha($00FF00FF);
И все будет забибись.
dRake (2004-12-16 22:27:00) [5]Хз я под 2.41 сижу там такая есть :)
TAGFImage.LoadFromFileAlpha1bit
D-Man (2004-12-16 22:16:00) [6]
> Image.LoadFromAlpha1Bit(D3DDevice, 256, 256, 256, 256, $FF00FF);
Это где такая функция?
dRake (2004-12-16 21:36:00) [7]2 D-Man
На всякий случай проверь подключил ли ты PDrawEx.dll
А вообще забай на всякие там ImageList'ы
Юзай обычные массивы.
Image.LoadFromAlpha1Bit(D3DDevice, 256, 256, 256, 256, $FF00FF);
dRake (2004-12-16 21:34:00) [8]2 D-Man
Четвертый байт отвечает за альфу - степень прозрачности.
2 Darth
$00FF00FF = $FF00FF
D-Man (2004-12-16 21:33:00) [9]
> Возможно это глюк в PD, там их полно. Я лично испльзую только
> TGA, и возможностей больше и нет проблем.
Только они к сожалению весят в два раза больше
> Попробуй $00FF00FF;
> Должно помочь.
Не помогает
Darth (2004-12-16 20:34:00) [10]Попробуй $00FF00FF;
Должно помочь.
Dic (2004-12-16 20:24:00) [11]Возможно это глюк в PD, там их полно. Я лично испльзую только TGA, и возможностей больше и нет проблем.
D-Man (2004-12-16 19:27:00) [12]И так и так одно и тоже. В первом случае первый байт отвечает за какую-то дополнительную инфу я только незнаю за какую именно и он вроде необязателен.
dRake (2004-12-16 19:18:00) [13]>AGFImageList1.Images[0].TransparentColor := $FFFF00FF;
Может $FF00FF?