Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

08.08.2009, 07:56

Bewegtes Bildschirmelement flakert

Guten Morgen zusammen,

ich lasse in einem Fenster zwei Kreise umherfliegen.

Die Bewegung habe ich über folgenden Timer realisiert:

Quellcode

1
2
3
4
5
6
7
8
void MainWndProc_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
//------------------
//Schnitt
//-----------------

        case TIMER_1_STARTEN:
                SetTimer (hwnd, TIMER_1, 5, NULL);
        break;


Realisiert wird die Bewegung dann im Unterprogramm über:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int t=0; //Variable für die Bewegung

BOOL ball_zeichnen (HWND hwnd)
{       //-------------
        //Schnitt
        //------------



    //zeitabhängige Variable t hochzählen
    t=t+1;
    printf("\nmeine_Unterprogramme.c:Variable t hat den Wert %i", t); //Ausgabe Konsole

    //Definition der Bewegung
    x=0.5*v0*cos(winkel)*t;
        y=...


Die Bewegung funktioniert auch wunderbar. Jedoch flakern die Bewegten Objekte. D.h. sie werden nicht richtig dargestellt, sobald sie sich bewegen.
Was kann ich tun?

Randbedingung: WinAPI

Grüße
Dani

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

08.08.2009, 09:16

Du könntest versuchen die Ausgabe zu puffern in dann auf einen Schlag zu blitten.

3

08.08.2009, 09:27

Verwende einen richtigen Timer...

... und arbeite die Nachrichten, die Windows dir liefert, entsprechend ab.

Schau dir mal die Funktion InvalidateRect an.

Kauf dir den Petzold. ;)
fka tm

Werbeanzeige