Главная страница
    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
14-4577
Sergo
2002-11-11 13:36
2002.12.02
Kylix


3-4215
Yazilimci
2002-11-14 10:35
2002.12.02
ADO v Delphi 5


6-4559
ZhenG
2002-09-26 07:14
2002.12.02
Помогите ввести логин и пароль


6-4539
MasterVovan
2002-10-06 11:03
2002.12.02
Как создать простой html редактор???


1-4382
ShooRoop
2002-11-22 15:31
2002.12.02
ОП





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