Ich habe wieder mal ein Problem welches sicherlich einfach zu lösen ist, dessen Lösung ich aber leider nirgends finden konnte.
Über den Druck auf ein Button soll sich ein Bereich des Fensters entsprechend färben, ohne das durch das verschieben des Fensters über den Display hinaus oder das abdecken durch ein anderes Fenster diese Färbung verschwindet. Diesbezüglich stelle ich ein Code herein und hoffe, glaube das ihr mir den Fehler erleutern könnt.
Code: Alles auswählen
Enumeration
#Window
#Image
#Graphic
#Button_0
#Button_1
#Button_2
EndEnumeration
#Gruen.l = $00FF00
#Rot.l = $FF0000
#Blau.l = $0000FF
Declare DrawColor(Value.l)
If OpenWindow(#Window, 100, 200, 400, 300, #PB_Window_SystemMenu |#PB_Window_ScreenCentered, "PureBasic Window")
CreateImage (#Graphic, 100, 100)
If CreateGadgetList(WindowID(#Window))
ImageGadget (#Image, 150, 100, 100, 100, UseImage(#Graphic), #PB_Image_Border)
ButtonGadget(#Button_0, 300, 260, 60, 20, "Gruen")
ButtonGadget(#Button_1, 040, 260, 60, 20, "Rot")
ButtonGadget(#Button_2, 170, 260, 60, 20, "Blau")
EndIf
Repeat
EventID.l = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow ; If the user has pressed on the close button
Quit = 1
ElseIf EventID = #PB_Event_Gadget
Select EventGadgetID()
Case #Button_0
DrawColor(#Gruen)
Case #Button_1
DrawColor(#Rot)
Case #Button_1
DrawColor(#Blau)
EndSelect
EndIf
Until Quit = 1
EndIf
End
Procedure DrawColor(Value.l)
StartDrawing(ImageOutput())
Box(0, 0, 100, 100, Value)
DrawImage(UseImage(#Graphic), 100, 100)
StopDrawing()
EndProcedure