2012-04-02 1 views
0

я не могу показаться, чтобы получить CBitmap на самом деле появляться на экране ... Вот код в OnPaint:Bitmap не втягивая OnPaint CFrameWnd в

CRect frm; 
GetClientRect(frm); 

CClientDC dc(this); 
//dc.FillSolidRect(CRect(0, 0, 1000, 1000), RGB(255, 255, 255)); 
CDC dcMem; 
dcMem.CreateCompatibleDC(&dc); 
CBitmap* cache = dcMem.SelectObject(&components.icon.bmp); 

dc.BitBlt(0, 0, 55, 55, &dcMem, 0, 0, SRCCOPY); 
dc.SelectObject(cache); 

Определение components.icon.bmp есть. ..

components.icon.bmp.LoadBitmap(BMP_BOARDER); 
BITMAP icon; 
components.icon.bmp.GetBitmap(&icon); 

Здесь не должно быть проблем. Растровое изображение представляет собой 32-битное альфа-растровое изображение, а LoadBitmap возвращается TRUE.

Он не работает с 24 бит.

---- Получил это! Проблема с моими ресурсами

+0

Я не думал, что GDI знает о 32-битных растровых изображениях. Я думал, что это касается только 24 бит. – Robinson

+0

Выполняет LoadBitmap (возврат TRUE)? –

+0

Как мне сделать ddrawing 32-бит бит? – user965369

ответ

0

Этот код кажется мне хорошим, но есть еще много вещей, которые могут быть неправильными. Проверьте свой код, чтобы узнать, где проблема: - Если вы рисуете что-нибудь еще (например, прямоугольник), оно появляется в окне кадра? - Попробуйте сохранить BMP в файл и посмотреть, все ли в порядке. - Попробуйте преобразовать BMP в 24 бит с помощью инструмента и посмотреть, работает ли он.

Как только вы знаете, где проблема, вы сможете сосредоточиться на проблеме.

Возможно, вы не сможете нарисовать 32-битную битму с помощью GDI, но вы должны получить что-то (по крайней мере, черный квадрат). В любом случае, если вам нужно нарисовать 32-битные альфа-каналы с помощью GDI, вам нужно предварительно умножить изображение и использовать метод AlphaBlend вместо BitBlt.

+0

Я могу рисовать Прямоугольники и примитивы, но когда я использую функцию BitBlt, ничего не происходит. Ill try wit 24 bits – user965369

+0

Пробовал с 24 бит, не повезло. – user965369

+0

Я получаю эти странные всплывающие окна «Debug Assertion Failed» (два из них), но я просто игнорирую их, и программа запускается. – user965369

Смежные вопросы