Bild vom Window entfernen
Bild vom Window entfernen
Hi,
wie kann ich ein Image, dass ich mit StartDrawing(WindowOutput(#Window)) auf ein Fenster gezeichnet habe, wieder entfernen?
wie kann ich ein Image, dass ich mit StartDrawing(WindowOutput(#Window)) auf ein Fenster gezeichnet habe, wieder entfernen?
v6.00
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Eigentlich "gar nicht"
Du kannst nur den Fensterinhalt löschen neu zeichnen, ungefähr so...
//edit: Kaeru war schneller ^^
Du kannst nur den Fensterinhalt löschen neu zeichnen, ungefähr so...
Code: Alles auswählen
CreateImage(0, 200, 200)
OpenWindow(0, 0, 0, 300, 300, "Blubber", #PB_Window_SystemMenu)
CreateGadgetList(WindowID(0))
ButtonGadget(0, 20, 15, 100, 24, "Mach hinne!")
StartDrawing(WindowOutput(0))
DrawImage(ImageID(0), 50, 50)
StopDrawing()
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget ; Gibt ja nur 1 Gadget....
WindowID = WindowID(0)
InvalidateRect_(WindowID, 0, #True) ; <------- Dasda
EndIf
Until WaitWindowEvent() = #WM_CLOSE
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Ich will ein Image (max 64x64 Pixel) mit transparenten Stellen auf nem Window darstellen.
Ich machs so:
ich mal die sichtbaren Stellen Punkt für Punkt auf das Fenster.
Blos mit dem hier gibts nur ein Problem:
Der Code ist OK, aber es wird der ganze Bildschirm neu gezeichnet; das flackert bei mir!!!
Gibt es ne möglichkeit, dass nur der Bereich, wo das Image ist, neu "gezeichnet" wird (das das Bild weg ist, und das Fenster nicht flackert)?
Ich machs so:
ich mal die sichtbaren Stellen Punkt für Punkt auf das Fenster.
Blos mit dem hier gibts nur ein Problem:
Code: Alles auswählen
InvalidateRect_(WindowID(#HauptFenster), 0, #True)

Gibt es ne möglichkeit, dass nur der Bereich, wo das Image ist, neu "gezeichnet" wird (das das Bild weg ist, und das Fenster nicht flackert)?
v6.00
- Green Snake
- Beiträge: 1394
- Registriert: 22.02.2005 19:08
So
Aber das Image ist immernoch die bessere Lösung 
Code: Alles auswählen
Define Rect.RECT
Rect\Left = 0 ;Hier gibst du die Koordinaten an.
Rect\Top = 0
Rect\Right = 100
Rect\Bottom = 100
InvalidateRect_(WindowID(#HauptFenster),@Rect,#True)

-.-"