Gadget auf ImageGadget verschwindet

Anfängerfragen zum Programmieren mit PureBasic.
Syntacks_Error
Beiträge: 107
Registriert: 08.03.2009 16:08

Gadget auf ImageGadget verschwindet

Beitrag von Syntacks_Error »

Code: Alles auswählen

window = OpenWindow(#PB_Any,200,100,400,200,"Test",#PB_Window_SystemMenu)
testGad = TrackBarGadget(#PB_Any, 0, 0, 150, 30, 0,100) 
image = CreateImage(#PB_Any,400,200)
imageGad = ImageGadget(#PB_Any,0,0,400,200,ImageID(image))
Repeat
  event = WaitWindowEvent() 
  If event = #PB_Event_Gadget
   If EventGadget() = testGad
    SetGadgetState(testGad,GetGadgetState(testGad)) 
   ElseIf EventGadget() = imageGad 
    StartDrawing(ImageOutput(image))
    Circle(WindowMouseX(window),WindowMouseY(window),10,Random($ffffff)) 
    StopDrawing()
    SetGadgetState(imageGad,ImageID(image)) 
   EndIf 
  EndIf
Until event = #PB_Event_CloseWindow 
Einmal wird das TrackBarGadget nur angezeigt, wenn es vor dem ImageGadget gesetzt wird, was nicht unbedingt einleuchtet und im Einzelfall unpraktisch ist.

Zum anderen verschwindet es, wenn mit einem Mausklick irgendwo auf dem Bild ein Kreis gezeichnet und das Bild dann aktualisert wird. Klickt man dann auf die Stelle des TrackBarGadgets, erscheint es zwar wieder teilweise oder manchmal auch ganz, aber das ist ja wohl kaum die Lösung.

Wie erreiche ich, daß bei übereinandergeltegent Gadgets und der Änderung des einen weiterhin alle angezeigt werden?
Riacon
Beiträge: 61
Registriert: 21.01.2008 09:40

Re: Gadget auf ImageGadget verschwindet

Beitrag von Riacon »

das wäre keine lösung?

Code: Alles auswählen

window = OpenWindow(#PB_Any,200,100,400,230,"Test",#PB_Window_SystemMenu)
testGad = TrackBarGadget(#PB_Any, 0, 0, 400, 30, 0,100) 
image = CreateImage(#PB_Any,400,200)
imageGad = ImageGadget(#PB_Any,0,30,400,200,ImageID(image))
Repeat
  event = WaitWindowEvent() 
  If event = #PB_Event_Gadget
   If EventGadget() = testGad
    SetGadgetState(testGad,GetGadgetState(testGad)) 
   ElseIf EventGadget() = imageGad 
    StartDrawing(ImageOutput(image))
    Circle(WindowMouseX(window),WindowMouseY(window),10,Random($ffffff)) 
    StopDrawing()
    SetGadgetState(imageGad,ImageID(image)) 
   EndIf 
  EndIf
Until event = #PB_Event_CloseWindow 
pb 4.51 win7 64
°°°
Beiträge: 59
Registriert: 05.11.2008 17:45

Re: Gadget auf ImageGadget verschwindet

Beitrag von °°° »

Hi

ich glaube Riacons Lösung ist die einzige möglichkeit. Ich habe versucht das window über API dazu zubring sie selbst neu zu zeichnen, bringt aber gar nichts.

mfg °°°
PureBasic 4.51

Support this Game:_______________________Mein Buch:
http://www.interstellarmarines.com/_______http://www.epubli.de/shop/showshopelement?pubId=3477
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Gadget auf ImageGadget verschwindet

Beitrag von STARGÅTE »

Wie oft muss eigentlich noch erwähnt werden das PureBasic-Gadgets kein Z-Layer unterstützen ?

Wenn dann musst du mittels API "sagen", dass das TrackBarGadget ein Kind des ImageGadgets ist:
SetParent_(GadgetID(ChildGadgat), GadgetID(Gadget))

Code: Alles auswählen

window = OpenWindow(#PB_Any,200,100,400,200,"Test",#PB_Window_SystemMenu)
testGad = TrackBarGadget(#PB_Any, 0, 0, 150, 30, 0,100) 
image = CreateImage(#PB_Any,400,200)
imageGad = ImageGadget(#PB_Any,0,0,400,200,ImageID(image))
SetParent_(GadgetID(testGad), GadgetID(imageGad))
Repeat
  event = WaitWindowEvent() 
  If event = #PB_Event_Gadget
   If EventGadget() = testGad
    SetGadgetState(testGad,GetGadgetState(testGad)) 
   ElseIf EventGadget() = imageGad 
    StartDrawing(ImageOutput(image))
    Circle(WindowMouseX(window),WindowMouseY(window),10,Random($ffffff)) 
    StopDrawing()
    SetGadgetState(imageGad,ImageID(image)) 
   EndIf 
  EndIf
Until event = #PB_Event_CloseWindow 
EDIT:

Ohne API geht auch, UseGadgetList:

Code: Alles auswählen

window = OpenWindow(#PB_Any,200,100,400,200,"Test",#PB_Window_SystemMenu)
image = CreateImage(#PB_Any,400,200)
imageGad = ImageGadget(#PB_Any,0,0,400,200,ImageID(image))
Old = UseGadgetList(GadgetID(imageGad))
 testGad = TrackBarGadget(#PB_Any, 0, 0, 150, 30, 0,100) 
UseGadgetList(Old)
Repeat
  event = WaitWindowEvent() 
  If event = #PB_Event_Gadget
   If EventGadget() = testGad
    SetGadgetState(testGad,GetGadgetState(testGad)) 
   ElseIf EventGadget() = imageGad 
    StartDrawing(ImageOutput(image))
    Circle(WindowMouseX(window),WindowMouseY(window),10,Random($ffffff)) 
    StopDrawing()
    SetGadgetState(imageGad,ImageID(image)) 
   EndIf 
  EndIf
Until event = #PB_Event_CloseWindow 
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Häns
Beiträge: 47
Registriert: 27.10.2007 14:30
Wohnort: Kölle

Re: Gadget auf ImageGadget verschwindet

Beitrag von Häns »

:allright: Danke Stargate! (Wieso bin ich nicht selber darauf gekommen??? :roll: )

Häns und seine "Boxgegurke"
PB 5.6
Windows 7 Professional
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Gadget auf ImageGadget verschwindet

Beitrag von Kiffi »

STARGÅTE hat geschrieben:Wie oft muss eigentlich noch erwähnt werden das PureBasic-Gadgets kein Z-Layer unterstützen ?
ein klassischer Fall für die FAQ?

Grüße ... Kiffi
Hygge
Syntacks_Error
Beiträge: 107
Registriert: 08.03.2009 16:08

Re: Gadget auf ImageGadget verschwindet

Beitrag von Syntacks_Error »

Kein Grund rumzubrüllen, aber trotzdem vielen Dank.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Gadget auf ImageGadget verschwindet

Beitrag von STARGÅTE »

Hab ja nicht "rumgebrüllt".
Sonden nur eine Frage gestellt :wink:

Denn wenn man genau deinen Themen-Titel in die Suche eingibt, bekommt man mehrere Treffer zu genau diesem Thema:
Gadget auf ImageGadget verschwindet

@Kiffi
Jo muss mal das Passwort wieder suchen ^^
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
dige
Beiträge: 1182
Registriert: 08.09.2004 08:53

Re: Gadget auf ImageGadget verschwindet

Beitrag von dige »

Das ImageGadget einfach deaktivieren, dann funzt es auch!

Code: Alles auswählen

DisableGadget (imageGad, #True)
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."
Antworten