Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.12.02;
Скачать: [xml.tar.bz2];

Вниз

Bitmap   Найти похожие ветки 

 
Зинтересованный   (2002-10-18 05:05) [0]

Подскажите как гарантировано создать 24-битный битмап. В VCL этим заведует свойство PixelFormat. А как такое проделать средствами API? Если возможно, то хоть кусочек кода.


 
MBo   (2002-10-18 05:52) [1]

Например, CreateBitmap(100,100,3,8,AdressOfPixelArray)


 
Заинтересованный   (2002-10-18 08:23) [2]

Попробую уточнить.
bmp := CreateCompatibleBitmap(DC, 200, 50);
tmpDC := CreateCompatibleDC(DC);
SelectObject(tmpDC, bmp);
BitBlt(tmpDC, 0, 0, 200, 50, ScreenDC, 40, 110, SRCCOPY);

SemiTransparent(bmp, 120);

BitBlt(ScreenDC, 40, 110, 200, 50, tmpDC, 0, 0, SRCCOPY);
TransparentBmp(ScreenDC, m_bmpPause, 75, 114);
DeleteObject(bmp);
DeleteDC(tmpDC);

Данный код прекрасно работает за исключением того, что зависим от настроек монитора. Попробовал нижеуказанный код
bmp := CreateBitmap(200, 50, 3, 8, NIL);
tmpDC := CreateDC("DISPLAY", NIL, NIL, NIL);
SelectObject(tmpDC, bmp);
BitBlt(tmpDC, 0, 0, 200, 50, ScreenDC, 40, 110, SRCCOPY);

DrawShadow(bmp, 120);

BitBlt(ScreenDC, 40, 110, 200, 50, tmpDC, 0, 0, SRCCOPY);
TransparentBmp(ScreenDC, m_bmpPause, 75, 114);
DeleteObject(bmp);
DeleteDC(tmpDC);

но здесь получилась полная ахинея. Первый BitBlt копирует картинку на Десктоп. Конечно создал канвас от дисплея туда и выводится. Но как сделать нормально. Суть проста. Вырезать с битмапа кусок изображения, обработать и положить обратно. Оригинальный битмап 24-битный, а вырезанный зависит от настроек монитора. Хотелось бы вырезать в том же формате, что и оригинал.


 
MBo   (2002-10-18 09:03) [3]

Тогда делай CreateDibSection


 
Заинтересованный   (2002-10-18 12:15) [4]

Спасибо. Все получилось.


 
SPeller   (2002-10-18 14:39) [5]

Вообще, разрядность цвета битмапа при создании его через CreateCompatibleBitmap зависит от свойств DC, для которого он создаётся. Если взять DC от CreateCompatibleDC( 0 ) то битмап будет монохромным, а если DC рабочего стола, то глубина цвета будет соответствовать установленной в настройках монитора.


 
MBo   (2002-10-18 15:01) [6]

>SPeller
Естественно, при этом же DDB (Device-Dependent Bitmap) создается. А вот для DIB что угодно задать можно


 
Заинтересованный   (2002-10-19 08:01) [7]

>SPeller © (18.10.02 14:39)
Я это прекрасно знаю. Меня интересовал способ получения именно независимого битмапа.


 
SPeller   (2002-10-19 14:21) [8]


> Заинтересованный (19.10.02 08:01)

Ну тогда, как уже сказали, DIB



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

Форум: "WinAPI";
Текущий архив: 2002.12.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
3-4209
Savva Novikov
2002-11-12 18:37
2002.12.02
Вывод данных из БД в Excel


4-4677
Ev_genus
2002-10-21 22:16
2002.12.02
CreateDialogIndirect


1-4312
AndreyAgSoft
2002-11-19 11:35
2002.12.02
ShellListView


1-4502
wer1
2002-11-20 09:30
2002.12.02
Работа с вещественными числами - Exstended


1-4309
BJValentine
2002-11-21 11:25
2002.12.02
FindFirst, FindNext, FindClose





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский