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

Вниз

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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.024 c
1-4399
bAgmAn
2002-11-22 18:39
2002.12.02
Файлы


14-4604
oddboy
2002-11-04 08:54
2002.12.02
Нужна прога по элементарной векторной графике!


1-4324
Трое из Леса
2002-11-21 16:14
2002.12.02
TWebBrowser


14-4574
Govorin S.
2002-11-11 16:12
2002.12.02
Заплачю 10WMZ за простую работу


6-4557
Rouse_
2002-09-27 00:04
2002.12.02
Различие между локальным и инетовским IP