Hintergrund bringt flackern
-
Hi leute,
im schulischen zusammenhang programmieren wir tic tac toe.
habe mich jetzt mal bezüglich des double bufferings informiert. daraufhin habe ich folgende 2 methoden mit dem assistenten erstellt:BOOL CTTTView::OnEraseBkgnd(CDC* pDC) { // TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen und/oder Standard aufrufen CRect CClientRect; GetClientRect(&CClientRect); pDC->FillRect(&CClientRect, &m_hintergrund); //fuellt das rechteck aus return true; } void CTTTView::OnInitialUpdate() { CView::OnInitialUpdate(); // TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen m_hintergrund.CreateSolidBrush(RGB(70,55,251)); //pinsel erstellen und farbe für hintergrund festlegen }Brauche natürlich noch ein Hintergrund.
Sonst sieht es nicht schön aus. Nur bringt der Hintergrund wieder alles zum flackern. Warum?
ich habe doch nur einen hintergrund gesetzt.
auch wenn ich den in ::ondraw erstelle...woran liegt das?
OnEraseBkgnd soll ja gegen das flackern helfen.sebastian
-
NeinOnErsseBkGnd hilft nicht gegen das Flackern. Der kurze Moment in dem der Hintergrund gezeichnet wird bis der Vordergrund wieder da ist lang um bei User ein Flackergefühl auszulösen, wnen die Refreshs häufiger sind.
Thema Doublebuffering.
Suche mal nach CMemDC bei www.codeproject.comDort ist alles erklärt.
-
ja, du meinst
http://www.codeproject.com/KB/GDI/flickerfree.aspxgenau das wollte ich eigentlich verhindern.
viel code ist das
-
habe mein invalidate() nun überall mit dem paramter FALSE aufgerufen.
klappt auch, aber ohne hintergrund.wie kann ich jetzt nen hintergrund erstellen ohne das es flackert?
void CMeineKlasse::OnDraw(CDC* pDC) { CBrush* myBrush = new CBrush(RGB(204,228,253)); CRect clientRect; GetClientRect(&clientRect); pDC->FillRect(clientRect, myBrush); }
-
Du liest nicht!
In OnEraseBkgnd nichts machen und TRUE zurück. Invalidate solltest Du nicht mit FALSE aufrufen.
-
Martin Richter schrieb:
Du liest nicht!
In OnEraseBkgnd nichts machen und TRUE zurück. Invalidate solltest Du nicht mit FALSE aufrufen.dann steht aber immer noch aus wie ich das mit dem hintergrund mache.
denn der fehlt mir ja noch.
-
Lies doch den Artikel. Du löscht den Hintergrund mit in der OnPaint Routine...