S
@hustbaer sagte in Verständnisfrage GDI: DeviceContext + Bitmap:
Jain. Wenn du einen DC verwendest der eine Bitmap als Ziel hat, dann speichert der DC keine Operationen, er führt sie direkt aus. D.h. er ändert direkt die Pixel der Bitmap. (Ich bin mir nicht 100% sicher, aber ich denke das ist anders wenn der DC z.B. ein Metafile als Ziel hat. Ich denke in dem Fall werden wirklich die Operationen im Metafile gespeichert. Musst du die aber keine Gedanken darüber machen so lange du mit Bitmaps arbeitest.)
hmm Ok , wenn ich also die Zeichen Operation auf dem DC ausführe (welche von dem original DC erzeugt wurde) kann ich diese dann nachträglich auf ein Bitmap oder DIB speichern/mappen? Müsste ich dann nochmal einen neuen Ziel DC mit bitmap erzeugen und ein BitBlt machen!?
EDIT ; Beispiel , Gerade ausprobiert: (lasse ich zeile 8-10 weg, wird nichts gemalt)
CPaintDC dc(this);
CRect rect;
GetClientRect (&rect);
CDC mem;
mem.CreateCompatibleDC(&dc);
CBitmap bmp;
bmp.CreateCompatibleBitmap(&dc,rect.Width(), rect.Height());
CBitmap* pOldBitmap = mem.SelectObject( &bmp );
CBrush red (RGB (255, 0, 0));
mem.FillRect(CRect(CPoint(0,0),CSize(50,50)),&red);
::BitBlt(dc, 0,0, rect.Width(), rect.Height(), mem, 0, 0, SRCCOPY);