Форум: "Начинающим";
Текущий архив: 2011.11.27;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.024 c