Seite 1 von 1

Gadget auf ImageGadget verschwindet

Verfasst: 29.11.2010 13:59
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?

Re: Gadget auf ImageGadget verschwindet

Verfasst: 29.11.2010 15:36
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 

Re: Gadget auf ImageGadget verschwindet

Verfasst: 29.11.2010 15:49
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 °°°

Re: Gadget auf ImageGadget verschwindet

Verfasst: 29.11.2010 16:36
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 

Re: Gadget auf ImageGadget verschwindet

Verfasst: 29.11.2010 17:53
von Häns
:allright: Danke Stargate! (Wieso bin ich nicht selber darauf gekommen??? :roll: )

Häns und seine "Boxgegurke"

Re: Gadget auf ImageGadget verschwindet

Verfasst: 29.11.2010 18:31
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

Re: Gadget auf ImageGadget verschwindet

Verfasst: 29.11.2010 20:15
von Syntacks_Error
Kein Grund rumzubrüllen, aber trotzdem vielen Dank.

Re: Gadget auf ImageGadget verschwindet

Verfasst: 29.11.2010 20:21
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 ^^

Re: Gadget auf ImageGadget verschwindet

Verfasst: 01.12.2010 15:24
von dige
Das ImageGadget einfach deaktivieren, dann funzt es auch!

Code: Alles auswählen

DisableGadget (imageGad, #True)