Ich sitze davor und verstehe Bahnhof, sieht ganz leicht aus, aber irgendwie fällt der Groschen trotzdem nicht
Ziel: Ich will im Speicher aus mehreren Bitmaps die nachher teilweise übereinander liegen eine einzige bauen, und diese dann am Stück ins Fenster zeichnen
Ich habe 100 Artikel zu WM_PAINT, BitBlt und double buffering gelesen, auch in diesem Forum, aber ich verstehe es nicht, irgendwie fehlt mir die Verbindung der Teile
Mit einer Grafik und ohne Zwischenspeichern habe ich es so:
Wenn ich nun mehrere Grafiken zeichnen will, verdoppele ich einfach alles was zwischen BeginPaint und EndPaint steht, nur mit einer anderen BMP und anderen Koordinaten im BitBlt, so weit so einfach
Aber wenn ich das ganze vorher off screen zusammen bauen will stehe ich auf dem Schlauch und weiss nicht mal genau warum
BitBlt braucht eine QuellDC und eine ZielDC also brauche ich dann im Ganzen 3 DC´s, ausserdem muss ich mit CreateCompatibleBitmap() einen Bereich definieren, wo der off screen Inhalt erstmal rein soll
THEORETISCH .......
Wenn ich das habe, kann ich mit BitBlt sämtliche nötigen Grafiken der Reihe nach in die off screen Bitmap zeichnen und hinterher wieder mit BitBlt die off screen Bitmap ins Fenster zeichnen
ABER ........
So einfach das auch klingt, ich verliere jedesmal zwischen den ganzen Create, Select, Get, HDC, BITMAP und HBITMAP die Übersicht, oder kurz, ich krieg es nicht auf die Reihe
Kann mir jemand auf die Sprünge helfen?
Ziel: Ich will im Speicher aus mehreren Bitmaps die nachher teilweise übereinander liegen eine einzige bauen, und diese dann am Stück ins Fenster zeichnen
Ich habe 100 Artikel zu WM_PAINT, BitBlt und double buffering gelesen, auch in diesem Forum, aber ich verstehe es nicht, irgendwie fehlt mir die Verbindung der Teile
Mit einer Grafik und ohne Zwischenspeichern habe ich es so:
Code:
case WM_PAINT:
{
BITMAP bm;
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
HDC hdcMem = CreateCompatibleDC(hdc);
HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, meineBMP);
GetObject(meineBMP, sizeof(bm), &bm);
BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);
SelectObject(hdcMem, hbmOld);
DeleteDC(hdcMem);
EndPaint(hwnd, &ps);
return 0;
}
break;
Wenn ich nun mehrere Grafiken zeichnen will, verdoppele ich einfach alles was zwischen BeginPaint und EndPaint steht, nur mit einer anderen BMP und anderen Koordinaten im BitBlt, so weit so einfach
Aber wenn ich das ganze vorher off screen zusammen bauen will stehe ich auf dem Schlauch und weiss nicht mal genau warum
BitBlt braucht eine QuellDC und eine ZielDC also brauche ich dann im Ganzen 3 DC´s, ausserdem muss ich mit CreateCompatibleBitmap() einen Bereich definieren, wo der off screen Inhalt erstmal rein soll
THEORETISCH .......
Wenn ich das habe, kann ich mit BitBlt sämtliche nötigen Grafiken der Reihe nach in die off screen Bitmap zeichnen und hinterher wieder mit BitBlt die off screen Bitmap ins Fenster zeichnen
ABER ........
So einfach das auch klingt, ich verliere jedesmal zwischen den ganzen Create, Select, Get, HDC, BITMAP und HBITMAP die Übersicht, oder kurz, ich krieg es nicht auf die Reihe
Kann mir jemand auf die Sprünge helfen?