Mit der WinAPI zeichnen

Hi,

ich habe mal versucht ein "in game menu" für ein Spiel nur mit der WinAPI zu schreiben.
Also ich möchte einfach nur in einem Spiel geometrische Formen und Texte zeichnen.
Das Zeichnen an sich klappt schon aber mein Problem ist dass die Zeichnungen flackern weil das Spiel eben zu oft (zu schnell) neu gezeichnet wird.

Gibt es vielleicht eine Methode dieses Flackern zu verhindern ?
Ich habe schon überlegt einen Hintergrund in das Spiel einzufügen und dann nur in diesem Bereich zu zeichnen aber ich weiss gar nicht ob das möglich ist :/

MfG



// Edit

Ich programmiere in C++.
 
Du könnest mithilfe eines Timers den Redraw für, sagen wir mal 20 bis 30ms, sperren.
Oder den Redraw nur dann ausführen, wenn wirklich eine Änderung stattgefunden hat.

mfg benediktibk
 
Nee das bringt auch nichts weil meine Zeichnung immer vom Spiel gelöscht wird ( Wenn das Spiel neu gezeichnet wird ).

Hier mal ein Beispiel:

Code:
        hWindow = GetForegroundWindow();
        hDC = GetDC (hWindow);
        
        TextOut(hDC,10,10,"Hello World",11);
        
        UpdateWindow (hWindow);
        ReleaseDC (hWindow,hDC);
        
        Sleep (30);
 
wenn ich das richtig verstanden habe geht es dir nur um das zeichnen des menüs. oder geht es explizit darum die winapi zu benutzen? (die ist nämich echt(unnötig) harter tobak)

falls das nicht der fall ist kann ich dir für games und kleine grafik sachen nur SDL empfehlen, damit is son kram deutlich einfacher
 
Lesco hat im Prinzip eine Lösung gegeben, die auch in SDL gängig ist.
Das Flackern entsteht dadurch, dass du den Bildspeicher, der noch angezeigt wird, einfach löscht. Bis ein neues Bild geschrieben wird, dauert es aber. Wie lange das dauert, siehst du am flackern. ;)
Darum schreibt man beim Doppel-buffern nicht in den Buffer, der grade benutzt wird. So zeichnet man auf buffer B während A angezeigt wird, wenn B fertig ist werden Pointer getauscht (glaub ich zumindest, theoretisch am schnellsten), B wird angezeigt und auf A wird weiter geschrieben, usw.
Keine Grauzone mehr. :)
K.A. ob es sowas auch für die Winapi gibt, müsste aber.
 
jop so isses im grunde, nur würd eich in dem fall lieber auf sdl ausweichen anstatt in die(meiner mainung nach eh grottige) winapi doublebuffering zu implementieren. SDL is eh besser für alle arten von games und grafiken als die winapi :P
 
Für 2D Spiele in C/C++ sei auch noch wie immer die Allegro-Library genannt. Sehr einfach zu handhaben gut dokumentiert und man kommt schnell zum Erfolg.
 
Zurück
Oben