GDI-Beschleunigung in Windows 7 / Zeichnen in Speicherbitmap

Mein GDI-Programm läuft gut unter Windows XP, aber unter Windows Vista und 7 sieht es aufgrund der fehlenden GDI-Hardwarebeschleunigung ziemlich schrecklich aus. Ich erinnere mich, dass ich vor ein paar Jahren in einem Artikel gelesen habe, dass Windows 7 einigen GDI-Funktionen, einschließlich der BitBlt () - Funktion, eine Hardwarebeschleunigung verlieh. Wenn Sie auf eine Speicher-Bitmap zeichnen und dann mit BitBlt () das Bild in Ihr Hauptfenster kopieren, läuft es vermutlich ungefähr mit der gleichen Geschwindigkeit wie XP. Ist das wahr?

Wenn es wahr ist, wie machst du das? Ich kann schlecht programmieren und habe ein bisschen Probleme. Ich habe die folgende Klasse erstellt, um zu versuchen, sie zum Laufen zu bringen:

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);
}

In der OnPaint () Funktion des Fensters habe ich die Zeile hinzugefügt:

pDC->BitBlt(2, 2, 100, 100, &m_MemBmp, 0, 0, SRCCOPY);

Ich hatte gehofft, eine 100x100 Blackbox in der Ecke des Fensters zu sehen, aber es hat nicht funktioniert. Ich mache wahrscheinlich alles furchtbar falsch, wäre also dankbar, wenn jemand mir raten könnte, wie ich das richtig mache.

Vielen Dank für jeden Rat, den Sie anbieten können.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage