Форум: "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