Bild vom Window entfernen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Bild vom Window entfernen

Beitrag von Thomas »

Hi,
wie kann ich ein Image, dass ich mit StartDrawing(WindowOutput(#Window)) auf ein Fenster gezeichnet habe, wieder entfernen?
v6.00
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

mit nem Box() drüberzeichnen.

...außerdem ist das bild eh nicht permanent... beim nächsten refresh isses weg.
wisch mal mit nem anderen fenster drüber, dann verschwindets schon.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Jilocasin
Beiträge: 665
Registriert: 13.05.2006 16:04
Kontaktdaten:

Beitrag von Jilocasin »

Eigentlich "gar nicht"

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
//edit: Kaeru war schneller ^^
Bild
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

wer direkt auf ein Fenstermalt ist eh selbst Schuld.

Mal auf ein Imagegadget und alles wird gut.
:)
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

bobobo hat geschrieben:wer direkt auf ein Fenstermalt ist eh selbst Schuld.

Mal auf ein Imagegadget und alles wird gut.
:)
wenns so einfach wäre, würde ich es auch machen, ...

@Jilocasin:
es soll halt alles weg sein, dass ich zuvor draufgezeichnet habe. 8)
v6.00
Jilocasin
Beiträge: 665
Registriert: 13.05.2006 16:04
Kontaktdaten:

Beitrag von Jilocasin »

Thomas hat geschrieben:@Jilocasin:
es soll halt alles weg sein, dass ich zuvor draufgezeichnet habe. 8)
Ja, hastes mal ausprobiert? :mrgreen:
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Thomas hat geschrieben:wenns so einfach wäre, würde ich es auch machen, ...
was ist denn daran so schwierig?
was würdest du denn machen wollen, was aufm fensterhintergrund besser funktioniert als auf nem image?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

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:

Code: Alles auswählen

InvalidateRect_(WindowID(#HauptFenster), 0, #True)
Der Code ist OK, aber es wird der ganze Bildschirm neu gezeichnet; das flackert bei mir!!! :o
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
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

So

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)
Aber das Image ist immernoch die bessere Lösung :allright:
-.-"
Benutzeravatar
Thomas
Beiträge: 893
Registriert: 06.07.2006 19:24
Wohnort: Regensburg
Kontaktdaten:

Beitrag von Thomas »

Ich werd's mal mit dem ImageGadget versuchen, aber wo krig ich dir Farbe von dem ImageGadget her?
v6.00
Antworten