CDC in CClientDC laden
-
Hallo,
wie der Titel schon sagt, würde ich gerne auf ein CDC zeichnen und es dann komplett auf den CClientDC laden, damit man es sieht.Mit SelectObject und BitBLt bin ich nicht weiter gekommen. Wie geht das?
Danke,
Romeo-G
-
Achja, bisher sieht der Code so aus:
CClientDc dc3(this), dc3.setBkMode(TRANSPARENT); CDC tempDC; tempDC.CreateCompatibleDC(&dc3); tempDC.SelectObject(&graph); // graph ist ein CBitmap, das einen mathematischen Graphen enthält /* Hier will ich jetzt noch verschiedene Zusatzinformationen direkt über/auf den Graphen malen. Wenn ich aber direkt auf temDC male, dann übermalt das natürlich auch das graph-Bitmap und deshalb habe ich dann auf dem Bildschirm alte und neue Informationen übereinander. Wie kann ich also das Bitmap in tempDC laden, ohne dass ich das Bitmapl übermale, wenn ich nun auf tempDC zeichne? */ dc3.BitBlt( rcClip.left, rcClip.top, rcClip.Width(), rcClip.Height(), &tempDC, rcClip.left, rcClip.top, SRCCOPY); tempDC.deleteObject();Danke,
Romeo-G
-
Hallo,
ich verwende etwas ähnliches um Flackerfreies zeichnen zu ermöglichen. Ich zeichne zuerst in eine Bitmap im Speicher und Clippe die dann in das DC des Fensters. Hier der Code:
// ClientDC CPaintDC paintDC; CDC memDC; CBitmap memBmap; memDC.CreateCompatibleDC(pDC); memBmap.CreateCompatibleBitmap(pDC,rcClient.Width(),rcClient.Height()); memDC.SelectObject(&memBmap); // TODO: Hier in das MEMDC Zeichnen paintDC.BitBlt(rcClient.left,rcClient.top,rcClient.Width(),rcClient.Height(),&memDC,0,0,SRCCOPY); memBmap.DeleteObject(); memDC.DeleteDC();