Zeichnen auf Dialog (Flickerfree)
-
Moin,
Ich hab ein Problem, bei dem ich einfach nicht Vorran komme.
Ich Zeichne (im Moment) ein Liniendiagram auf meinen Dialog. Alle 100ms wird dieser Aktuallisiert (ungefähr wie die Systemlast im Task-Manager). Insgesamt hab ich 3 Diagramme (Untereinander).
Wenn ich die Diagramme ohne Hintergund zeichne, dann ist das Flackern erträglich (aber immer noch nicht schön). Wenn ich jetzt einen Weißen Hintergrund einfüge (einfaches Rechteck auch über zeichenfuktion) dann flackert es echt unangenehm.
Ich rufe in der OnPaint auf:
1. DrawBackground ()
2. Draw Daigram()Nun hab ich schon alle möglichen Beiträge hier durch. Aber fast alle beziehen sich auf Bitmaps, die irgendwo schon voehanden sind (ob nun als datei oder als Res)
Zeichenfunktion der Diagramme:
void CQuakemeasurementDlg::DrawGraph(int x, int y, int offset, int interval, COLORREF rgb) { CClientDC cDC(this); CPen cPen(PS_SOLID, 1, rgb); cDC.SelectObject(&cPen); cDC.MoveTo(x, offset); cDC.LineTo(x, offset+y); DeleteDC(cDC); }In einem Timer rufe ich die Berechung auf und am ende mache ich ein Invalidate(FALSE).
In den allen anderen Beiträgen wird von Double-Buffer und Spicher-Bitmap geredet. Leider wie gesagt immer nur im Bezug auf vorhandene Bitmaps. Wie "Male" ich jetzt aber in den Speicher, ohne en vorhandenes Bitmap zu haben?
Danke schonmal
-
Tach,
mach es so:
- ein CDC im Speicher erstellen
- dort deinen Stuff zeichnen
- wenn fertig gezeichnet den virtuellen CDC in deinen Fenster-CDC kopierenso funzt das bei mir Flickerfree. Näheres findest du über Boardsuche/Google
Greets,
MachineEDIT: sorry, hab eben erst gesehen, dass du das schon gefunden hast

einfach anstatt dem Fenster-DC ein anderes, selbst erstelltes zum Zeichnen nehmen. Habe grad keine Zeit, ich poste nachher mal nen Beispiel.