Hallo, ich bin dabei, mich ein bisschen in die Themen C++, speziell mit
der WinAPI einzulesen und habe folgendes Programm zum testen
geschrieben.
Was kann ich machen, dass sich die beiden Kreise nicht selber übermalen?
Mfg
Nein, mein Problem ist, dass die Bereiche, wo der eine Kreis war, mit
der Hintergrundfarbe überschrieben wurden und der zweite Kreis sich
scheinbar hinter diesen bewegt.
Man muss den Code nur kurz kompilieren und sieht gleich, was mein
Problem ist. ;)
Es gibt sicherlich eine Mange was man besser machen müsste,
aber zuerstmal:
InvalidateRect(hWnd, &InvalRect1, TRUE);
InvalidateRect(hWnd, &InvalRect2, TRUE);
muß im Timer auch passieren, BEVOR die Ellipsen verschoben wurden, damit
beim WM_PAINT dann bei BeginPaint die dortigen Stellen mit der
hbrBackground übermalt werden.
Daß man bei animierten Sachen prinzipiell nicht direkt auf den
Bildschirm schreiben sollte, sondern erst in eine bildschirmkompatible
Bitmap, und erst wenn alles gemalt wurde diese auf den Bildschirm
blittet an Stelle des bisherigen Inhalts, sollte zur Vermeidung von
Flimmereffekten klar sein - aber nicht mal Microsoft behrzigt dies
immer.
Und daß man heute bei SCHNELLER Animation mit DirectX ein komplett
anderes API verwenden muß, nennt Microsoft Fortschritt.
Die REIHENFOLGE der Ellipsen, also welche vorne zu liegen scheint und
welche hinten, ist durch die Reihenfolge im WM_PAINT bestimmt (Z-Order),
und falls man sie ändern will, muß man dort die Reihenfolge ändern.
Du hast keinen PEN selected, und daher nicht spezifziert wie die
Umrandung der blau gefüllten Ellipse aussehen soll.
Ok, vielen Dank!
Dann werde ich das alles mal überarbeiten müssen.
Ich steh wie gerade noch ganz am Anfang, mich mit WinAPI auseinander zu
setzen, DirectX wird der nächste Schritt sein.
Vielleicht finde ich ja noch ein gutes Tutorial in diesem Gebiet; das,
wovon ich mein Programm abgeleitet habe, scheint dafür ja nicht 100%
gemacht zu sein. ;)
Danke nochmal!