Seite 1 von 1
SetWindowColor
Verfasst: 19.05.2022 15:57
von Tirreg
Hallo, helft bitte einem Anfänger.
warum bleibt in meinem Code DrawText wirkungslos?
Code: Alles auswählen
OpenWindow(0, 1,1, 400,400, "Test")
SetWindowColor(0, RGB(50,100,50))
StartDrawing(WindowOutput(0))
DrawText(10,10, "xxxxxxx")
MessageRequester("","")
Danke!
Re: SetWindowColor
Verfasst: 19.05.2022 18:05
von jogo
StartDrawing() mußt du mit StopDrawing() abschließen.
Und um Änderungen am GUI sehen zu können, lasse ich immer das Programm nach solchen Änderungen zur Ereignisschleife zurück kehren.
Sonst wird die Änderung nicht sichtbar. Zumindest ist das bei Linux so.
Bau mal eine rudimentäre Ereignisschleife und teste das mal..
Re: SetWindowColor
Verfasst: 19.05.2022 20:08
von mk-soft
Es ist auch besser in ein CanvasGadget zu zeichnen.
Re: SetWindowColor
Verfasst: 20.05.2022 10:20
von Tirreg
Vielen Dank!
In Schleife geht´s.
Code: Alles auswählen
OpenWindow(0, 1,1, 400,200, "Test", #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
SetWindowColor(0, RGB(50,100,50))
Repeat
StartDrawing(WindowOutput(0))
DrawText(10,10, "xxxxxxx")
StopDrawing()
Until WaitWindowEvent(100) = #PB_Event_CloseWindow
Re: SetWindowColor
Verfasst: 20.05.2022 16:29
von RSBasic
mk-soft hat geschrieben: 19.05.2022 20:08
Es ist auch besser in ein CanvasGadget zu zeichnen.
@Tirreg
Ich würde dir ebenfalls empfehlen, einmalig in ein CanvasGadget oder ImageGadget zu zeichnen statt dauerhaft in der Event-Schleife, weils deutlich langsamer ist.
Re: SetWindowColor
Verfasst: 20.05.2022 17:57
von mk-soft
Auch wenn es unter Windows noch geht, sollte man das CanvasGadget nehmen.
Ausserdem braucht man bei einem CanvasGadget oder ImageGadget nur einmal zeichnen.
Wenn man auf dem Window Output zeichnet, muss man selber bei dem Ereignis 'Repaint' wieder alles zeichnen.
Wichtig ist auch die Events richtig strukturiert auszuwerten. Habe mal grob eingebaut
Code: Alles auswählen
Procedure DrawOnWindow()
StartDrawing(WindowOutput(0))
DrawText(10,10, "xxxxxxx")
StopDrawing()
EndProcedure
Procedure Main()
If OpenWindow(0, 1,1, 400,200, "Test", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
SetWindowColor(0, RGB(50,100,50))
DrawOnWindow()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Select EventWindow()
Case 0
Break
EndSelect
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
Case #PB_Event_Repaint
Select EventWindow()
Case 0
DrawOnWindow()
EndSelect
EndSelect
ForEver
EndIf
EndProcedure : Main()
Re: SetWindowColor
Verfasst: 21.05.2022 11:35
von Tirreg
Nochmals vielen Dank an alle!
Ich habe mich jetzt mit den Gadgets angefreundet, funktioniert alles prima.