Seite 1 von 1

Zeichnung löschen

Verfasst: 17.01.2007 18:32
von Leonhard
Wie kann ich in diesem Code die alten Kreise löschen lassen?

Code: Alles auswählen

If OpenWindow(0, 0, 0, 220, 150, "Draw-Test")
  Repeat
    event = WaitWindowEvent()
    If Event = #PB_Event_Repaint Or Event = #WM_MOUSEMOVE

      If StartDrawing(WindowOutput(0))
        Circle(10+WindowMouseX(0), 10+WindowMouseY(0), 10, $FF00FF)
        StopDrawing()
      EndIf
    EndIf
  Until Event = #PB_Event_CloseWindow
EndIf

End

Verfasst: 17.01.2007 18:38
von #NULL

Code: Alles auswählen

If OpenWindow(0, 0, 0, 220, 150, "Draw-Test")
  Repeat
    event = WaitWindowEvent()
    If Event = #WM_MOUSEMOVE
      InvalidateRect_(WindowID(0), #Null, #True)
    EndIf
    If Event = #PB_Event_Repaint
      StartDrawing(WindowOutput(0))
        Circle(10+WindowMouseX(0), 10+WindowMouseY(0), 10, $FF00FF)
      StopDrawing()
    EndIf
  Until Event = #PB_Event_CloseWindow
EndIf

End 

Verfasst: 17.01.2007 18:43
von NicTheQuick
Das hier klappt ganz gut:

Code: Alles auswählen

pos.RECT
If OpenWindow(0, 0, 0, 220, 150, "Draw-Test")
  Repeat
    event = WaitWindowEvent()
    If event = #WM_MOUSEMOVE
      InvalidateRect_(WindowID(0), pos, 1)
    EndIf
    If event = #WM_PAINT
      If StartDrawing(WindowOutput(0))
        pos\left = WindowMouseX(0)
        pos\top = WindowMouseY(0)
        pos\right = pos\left + 20
        pos\bottom = pos\top + 20
        Circle(pos\left + 10, pos\top + 10, 10, $FF00FF)
        StopDrawing()
      EndIf
    EndIf
  Until event = #PB_Event_CloseWindow
EndIf
///Edit:
Oh, da war ja jemand schneller. :)
Der Vorteil bei mir ist allerdings, dass nur die Region geupdatet wird, die
auch bemalt wurde.

Verfasst: 17.01.2007 18:45
von Kaeru Gaman
@NTQ
:allright: echt pfiffig