GDI-Bildschirm löschen
-
Hallo,
Wie mache ich das, dass der Bildschirm wieder weiss wird. Mit Invaidatelidate oder, wenn ich den Bildschirm weiss übermale, so sieht man alle anderen Sachen nichtmehr. Bsp.:While(true) { invalidateRect(hWnd,0,true); //Male igendetwas Rectangle(hDC,x1,y1,x2,y2); }
Wenn ich bei dem Code Invalidate (oder Bildschirm weiss übermalen) weglasse,
so sehe ich ein Rechteck. Schreibe ich es jedoch hin, so sehe ich überhaupt nichts,obwohl invalidate ja vor dem rect befehl steht. Wie bekomme ich das hin, das der Bildschim gelöscht wir und ich dann wieder neu drauf malen kann ?
(In Blitz geht das mit Flip und CLS)Vielen Dank für Antworten.
-
Gezeichnet wird bei WinAPI normalerweise in WM_PAINT und InvalidateRect führt auch dazu, dass diese Message gesendet wird. Dort wird, wenn du true als letzten Parameter angegeben hast, der angegebene Bereich (2. Parameter) mit dem in der Fensterklasse angegebenen Background-Brush gelöscht und anschließend mit dem DC wie gewünscht rumhantiert.
Was genau hast du denn vor zu machen
-
Ich wollte an der Position des Mauszeigers ein Viereck zeichnen,dass sich mit der Maus mitbewegt. Das klappt auch, nur wird, wenn ich die Maus bewege das alte Viereck immernoch angezeigt. So dass ich dann irgendwann den ganzen bildschirm voller rechtecke habe. Ich wollte jetzt mit invalidate den bildschirm nach dem zeichnen des vierecks löschen, so dass immer nur ein viereck zu sehen ist. Nun erschient jedoch überhaupt keines mehr.
-
Ich weiß zwar nicht genau, was das im Spiele-/Grafikprogrammierung - Forum zu suchen hat, aber das liegt wohl daran, was du in WM_PAINT machst (dort sollte eigentlich dann auch das zeichnen des Rechtecks mit rein. Hast einem gültigen (richtige Farbe) Brush im DC?