Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.11.27;
Скачать: CL | DM;

Вниз

SetDIBitsToDevice+alpha shannel   Найти похожие ветки 

 
Q_Q   (2011-08-05 11:31) [0]

Здравствуйте! Эта функция в качестве буффера принимает rgba массив. Заполненый массив имеется. Но функция при выводе альфу игнорирует :(

Как лечить?

BITMAPINFO* bm_info = new BITMAPINFO;
       bm_info->bmiHeader.biSize = 40;
       bm_info->bmiHeader.biSizeImage = 0;
       bm_info->bmiHeader.biWidth = Buff.Width;
       bm_info->bmiHeader.biHeight = -Buff.Height;
       bm_info->bmiHeader.biPlanes = 1;
       bm_info->bmiHeader.biBitCount = 32;
       bm_info->bmiHeader.biCompression = BI_RGB;

....................................

SetDIBitsToDevice(hDC, x, y, Buff.Width, Buff.Height, 0, 0, 0, Buff.Height, ptr_buff_paint, bm_info, DIB_RGB_COLORS);



 
Q_Q   (2011-08-05 11:32) [1]

В качестве приемника канва формы


 
Sapersky   (2011-08-05 11:37) [2]

GDI вообще с альфой не дружит, за исключением отдельных специально обученных функций (AlphaBlend).


 
Q_Q   (2011-08-05 11:42) [3]

мдааа....
а зачем все эти понты с 32-ух битным массивом?


 
Sapersky   (2011-08-05 12:05) [4]

Не знаю. Может, хотели сделать поддержку альфы, но по каким-то причинам не получилось.
Опять же, 4 байта на пиксель - более "круглый" и удобный в обращении размер даже без использования альфы. Видеокарты только с 32 битами и работают, хотя 4-й байт часто "пропадает".
Вывод битмапа на экран на некоторых картах быстрее в варианте 32->32 (чем 24->32), меньше преобразований.


 
Q_Q   (2011-08-05 12:12) [5]

угу понятно. А может подскажете функцию выполняющую обратное действие по отношению к сабжевой. ТЕ. с канвы в массив. Понятно что кроме getpixel


 
sniknik ©   (2011-08-05 12:21) [6]

>  и удобный в обращении размер даже без использования альфы. Видеокарты только с 32 битами и работают
+ автоматическое выравнивание на границу четного блока... т.е. оптимизация скорости в ущерб размеру... (как обычно и бывает либо одно либо другое ;)


 
Sapersky   (2011-08-05 12:32) [7]

А может подскажете функцию выполняющую обратное действие по отношению к сабжевой. ТЕ. с канвы в массив.

BitBlt? (битмап в памяти - тоже фактически массив).
Но вообще с канвы (экрана) лучше по возможности ничего не брать, чтение из видеопамяти медленнее записи.
Для полупрозрачных окон есть специальная функция - UpdateLayeredWindow.


 
Псарь   (2011-08-05 12:40) [8]


> Q_Q   (05.08.11 11:31)  


Может функция AlphaDIBBlend поможет?


> угу понятно. А может подскажете функцию выполняющую обратное
> действие по отношению к сабжевой. ТЕ. с канвы в массив.
> Понятно что кроме getpixel


Создавай DIB (Указываю буффером Ваш массив), помещай в DC.
Теперь можешь манипулировать с данными через указатель, а рисовать обычным блиттом. Очень удобно.


 
han_malign   (2011-08-05 12:41) [9]


> а зачем все эти понты с 32-ух битным массивом?

- между прочим, теоретически - маска каналов может быть и $000003FF, $000FFC00, $3FF00000...
Я правда не пробовал, но в X Window System поддержку подобной экзотики видел...


 
Псарь   (2011-08-05 12:41) [10]

*Указываю = Указывай


 
Q_Q   (2011-08-05 17:29) [11]


> Может функция AlphaDIBBlend поможет?

Погуглил. Говорят заголовочный есть, функции нету. Призрак )


> Создавай DIB (Указываю буффером Ваш массив), помещай в DC.


В эту сторону сейчас и копаю + BitBlt. Идет туго. Так что желающим помочь  буду благодарен.


 
Q_Q   (2011-08-05 17:49) [12]


> - между прочим, теоретически - маска каналов может быть
> и $000003FF, $000FFC00, $3FF00000...Я правда не пробовал,
>  но в X Window System поддержку подобной экзотики видел.
> ..


Это совсем извращение. Не, если конечно это собственный формат... или отдельная маска - тады да


 
Псарь   (2011-08-05 18:05) [13]


> Q_Q   (05.08.11 17:29) [11]


CreateDIBSection, SelectObject.


 
Q_Q   (2011-08-05 18:08) [14]

Да знаю, знаю. Тупость в пятницу вечером напала )) втыкнуть не получаца



Страницы: 1 вся ветка

Текущий архив: 2011.11.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
15-1312131628
Petr V. Abramov
2011-07-31 21:00
2011.11.27
с Днем ВМФ всех причастных!


1-1272455088
RAN-II
2010-04-28 15:44
2011.11.27
Доступ к документу FireFox


2-1312641641
avi9526
2011-08-06 18:40
2011.11.27
Где находится функция прорисовки TCheckBox


2-1312295124
Tim
2011-08-02 18:25
2011.11.27
ресурсы в длл


15-1312144196
Юрий
2011-08-01 00:29
2011.11.27
С днем рождения ! 1 августа 2011 понедельник