Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
3-1267604511
DenProx
2010-03-03 11:21
2011.11.27
Фильтрация Loockup поля


2-1312270931
arturich
2011-08-02 11:42
2011.11.27
runtime создание BandedColumn в cxGrid


3-1267379059
Ulugbek
2010-02-28 20:44
2011.11.27
Помогите спроектировать маленькую базу для учета медикаментов.


3-1265182852
Гость
2010-02-03 10:40
2011.11.27
Аудит триггером составной транзакции


15-1312662593
Юрий
2011-08-07 00:29
2011.11.27
С днем рождения ! 7 августа 2011 воскресенье





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский