Главная страница
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.018 c
6-4527
Лана Розанова
2002-10-04 10:57
2002.12.02
HELP......me


1-4442
SONY
2002-11-20 08:11
2002.12.02
Календарь на HTML


1-4424
Vladimir23
2002-11-23 12:50
2002.12.02
Memo и ComboBox.


8-4521
kima
2002-08-10 15:37
2002.12.02
gradient


14-4623
Anar
2002-11-12 23:14
2002.12.02
Не хочу трепаться, но, честно, я не вру!