Zeichnen mit MFC
-
Ich bewege über einen Timer eine Ellipse in einer dialogfeldbasierenden Anwendung von Links nach rechts. Der Bereich den die Ellipse durchschreitet ist hinterher schwarz. Wie kommt das ?
-
Servus,
du solltest nachdem du deine Elipse bewegt hast deinen Dialog neuzeichnen lassen. Dann wäre das damit behoben....
Nur die beste Lösung ist das glaube ich nicht.
Hellsgore
-
Also, was ich so gesehen habe, sieht alles, was sich bei dialogbasierten Anwendungen bewegt zum ****** aus.
Kenne das noch aus alten QBasic DOS-Zeiten :D.
-
Wenn ich den Dialog neu zeichen lasse flimmert alles..
Ist wohl vermutlch besser wenn ich eine SDI Anwendung hierführ schreibe !?
-
SDI:
void CRechtView::OnDraw(CDC* pDC) { CRechtDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // ZU ERLEDIGEN: Hier Code zum Zeichnen der ursprünglichen Daten hinzufügen if (bRect) { CBrush brush(RGB (255, 0, 0)); //CBrush *oldbrush = pDC->SelectObject(&brush); pDC->SelectObject(&brush); pDC->Rectangle(&rect); } } //Menüauswahl void CRechtView::OnStartMovement() { SetRect(); SetTimer (1, 10, NULL ); } //Menüauswahl void CRechtView::OnStopMovement() { KillTimer(1); } VOID CRechtView::SetRect() { rect.left = 10; rect.top = 10; rect.bottom = 40; rect.right = 80; bRect = TRUE; } void CRechtView::OnTimer(UINT nIDEvent) { rect.left++; rect.right++; if (rect.left >= 400) SetRect(); Invalidate(); CView::OnTimer(nIDEvent); }Läuft teilweise flüssig, dann flackern von oben nach unten...
-
Weiss denn keiner einen Rat?

-
Mit :
InvalidateRect(NULL,TRUE); UpdateWindow();flackert es ab und zu
Mit:
InvalidateRect(&rect,TRUE); UpdateWindow();Hinterlässt das Rechteck eine schwarze Spur.
Ist der Timer vielleicht auch das Problem ???
Ist es denn so schwierig ein einfache gefärbtes Rechteck von links nach rechts zu bewegen ???