Ускорение GDI в Windows 7 / Растровые рисунки в память
Моя программа GDI отлично работает в Windows XP, но в Windows Vista и 7 она выглядит довольно ужасно из-за отсутствия аппаратного ускорения GDI. Я вспоминаю, как несколько лет назад читал статью о том, что в Windows 7 добавлено аппаратное ускорение для некоторых функций GDI, включая функцию BitBlt (). Предположительно, если вы рисуете в битовую карту памяти, а затем используете BitBlt () для копирования изображения в главное окно, оно работает с той же скоростью, что и XP. Это правда?
Если это правда, как ты это делаешь? Я ужасно разбираюсь в программировании и у меня возникли некоторые проблемы. Я создал класс ниже, чтобы попытаться заставить его работать:
class CMemBmpTest
{
private:
CDC m_dcDeviceContext;
CBitmap m_bmpDrawSurface;
public:
CMemBmpTest();
~CMemBmpTest();
void Init();
void Draw();
};
CMemBmpTest::CMemBmpTest()
{
}
CMemBmpTest::~CMemBmpTest()
{
m_bmpDrawSurface.DeleteObject();
m_dcDeviceContext.DeleteDC();
}
void CMemBmpTest::Init()
{
m_dcDeviceContext.CreateCompatibleDC(NULL);
m_bmpDrawSurface.CreateCompatibleBitmap(&m_dcDeviceContext, 100, 100);
}
void CMemBmpTest::Draw()
{
m_dcDeviceContext.SelectObject(I.m_brshRedBrush);
m_dcDeviceContext.PatBlt(0, 0, 100, 100, BLACKNESS);
}
В функции окна OnPaint () я добавил строку:
pDC->BitBlt(2, 2, 100, 100, &m_MemBmp, 0, 0, SRCCOPY);
Я надеялся увидеть черный ящик 100х100 в углу окна, но он не сработал. Я, наверное, все делаю ужасно неправильно, поэтому был бы признателен, если бы кто-нибудь посоветовал мне, как сделать это правильно.
Спасибо за любой совет, который вы можете предложить.