Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

Mit der WinAPI zeichnen

Diskussion: Mit der WinAPI zeichnen im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hi, ich habe mal versucht ein "in game menu" für ein Spiel nur mit der WinAPI zu schreiben. Also ...

Antwort
Alt 23.07.09, 16:45   #1 (permalink)
 
Registriert seit: 02.12.07
nookstar Leistung: Facit NTK
Likes: 0
Standard Mit der WinAPI zeichnen

Anzeige

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++.

nookstar ist offline   Mit Zitat antworten
Alt 23.07.09, 17:57   #2 (permalink)
 
Benutzerbild von benediktibk
 
Registriert seit: 03.05.07
benediktibk Leistung: 8086benediktibk Leistung: 8086
Likes: 50
Standard

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
__________________
The essential prerequisite for building an expert system is to have an expert. - Frederick P. Brooks, Junior

Und wenn Ihr einen Politiker trefft der das gut findet - trefft ihn bitte ordentlich. - Chromatin
benediktibk ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 23.07.09, 18:50   #3 (permalink)
Themenstarter
 
Registriert seit: 02.12.07
nookstar Leistung: Facit NTK
Likes: 0
Standard

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);
nookstar ist offline   Mit Zitat antworten
Alt 23.07.09, 19:45   #4 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

http://en.wikipedia.org/wiki/Double_...puter_graphics
Du kannst einfach ein neues Bild erzeugen und dessen DC zum Zeichnen verwenden und dieses Bild dann in das Fenster kopieren. Allerdings weiß ich nicht, wie die betroffenen Funktionen in der WinAPI heißen. Das sollte dir helfen:
http://www.eggheadcafe.com/software/...ble-buffe.aspx
Lesco ist offline   Mit Zitat antworten
Alt 24.07.09, 08:38   #5 (permalink)
 
Registriert seit: 15.01.08
LionC Leistung: Facit NTK
Likes: 0
Standard

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
LionC ist offline   Mit Zitat antworten
Alt 24.07.09, 13:20   #6 (permalink)
Themenstarter
 
Registriert seit: 02.12.07
nookstar Leistung: Facit NTK
Likes: 0
Standard

Danke für die Antworten ich les mich mal durch die Links.
nookstar ist offline   Mit Zitat antworten
Alt 24.07.09, 14:38   #7 (permalink)
 
Benutzerbild von Extinction
 
Registriert seit: 02.01.07
Extinction Leistung: Facit NTK
Likes: 0
Standard

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.
Extinction ist offline   Mit Zitat antworten
Alt 24.07.09, 14:41   #8 (permalink)
 
Registriert seit: 15.01.08
LionC Leistung: Facit NTK
Likes: 0
Standard

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
LionC ist offline   Mit Zitat antworten
Alt 24.07.09, 17:02   #9 (permalink)
 
Benutzerbild von mauralix
 
Registriert seit: 17.04.06
mauralix Leistung: 8086
Likes: 3
Standard

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.
mauralix ist offline   Mit Zitat antworten
Alt 24.07.09, 19:19   #10 (permalink)
Themenstarter
 
Registriert seit: 02.12.07
nookstar Leistung: Facit NTK
Likes: 0
Standard

Gut danke euch ich werde mir dann wohl mal die SDL anschauen :>
nookstar ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Mit der WinAPI zeichnen
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Linien zeichnen :::Lük::: (Web-) Design und webbasierte Sprachen 5 18.02.08 18:19
c++ tabelle als vorlage zeichnen gelöscht Code Kitchen 2 16.10.05 21:31
Direkt auf PC zeichnen !? Caleb Hardware Probleme 5 01.05.05 01:41
Programm zum zeichnen von Funktionen matrixII Linux/UNIX 6 28.09.04 15:15
Graph von Exponentialfunktion zeichnen JiRd Off topic-Zone 1 13.06.04 12:40


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61