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

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

1

14.04.2005, 16:48

Ellipse - RedrawWindow

Folgendes Problem:

Ich zeichne eine Ellipse und will diese dann wo anders zeichnen. Um die alte zu löschen benutze ich den Befehl RedrawWindow, jedoch sorgt dieser nur dafür dass neue Kugel angezeigt wird, die alte bleibt jedoch solange erhalten, bis das Fenster einmal aus den Fokus raus ist.

Der Codeabschnitt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
HDC hdc; 
PAINTSTRUCT ps; 
hdc = BeginPaint (win, &ps); 

    for(Kugeln* temp=first;temp;temp=temp->next)
        Ellipse(hdc, temp->position.x-temp->radius, temp->position.y-temp->radius, temp->position.x+temp->radius, temp->position.y+temp->radius);

EndPaint(win,&ps);
RECT rec={0,0,600,400};
RedrawWindow(win, &rec,NULL, RDW_INVALIDATE | RDW_ERASE);

Heiko Kalista

Treue Seele

Beiträge: 99

Wohnort: Hessen

  • Private Nachricht senden

2

14.04.2005, 17:02

Hi!

Aus der MSDN:

RedrawWindow
The RedrawWindow function updates the specified rectangle or region in a window's client area.


Remarks:
When RedrawWindow is used to invalidate part of the desktop window, the desktop window does not receive a WM_PAINT message. To repaint the desktop, an application uses the RDW_ERASE flag to generate a WM_ERASEBKGND message.

mfg,
Heiko

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

14.04.2005, 20:07

Nur das ich nicht den Desktop neu malen will sondern die window area........

PD

unregistriert

4

14.04.2005, 22:05

Ich hatte das Problem das ich eine Linie löschen wollte. Hab die alte Linie einfach mit

C-/C++-Quelltext

1
Canvas->Pen->Mode = pmNotXor;

übermalt.

In der WinApi müsste das dann mit ROP2 gehen denk ich... so etwa:

C-/C++-Quelltext

1
SetROP2(hdc, R2_NOTXORPEN);


Bin aber net sicher ob das dann nur für den pen oder auch den Brush gilt.

Nox

Supermoderator

  • »Nox« ist der Autor dieses Themas

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

15.04.2005, 11:34

Das ist die Idee ich übermale einfach alles und ruhe ist, ist zwar nicht die feine englische aber der Zweck heiligt die Mittel.

DANKÖ :roll:

Werbeanzeige