Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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?


Наверх

Титульная страница Поиск, карта сайта Написать письмо