Um die Hintergrundfarbe eines Fensters oder eines Gadgets zu ermitteln, benötigt man keine systemspezifischen API-Funktionen, wenn man die Farbe selbst gesetzt hat, denn dies geht dann mit reinen PureBasic-Befehlen plattform-unabhängig:
Ermittlung der Hintergrundfarbe eines Fensters:
Code: Alles auswählen
OpenWindow(0, 100, 100, 250, 210, "Get background color")
SetWindowColor(0, $CDEBFF) ; X11-Farbe "Blanched almond"
MessageRequester("Info", "Hintergrundfarbe: $" + Hex(GetWindowColor(0)))
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Ermittlung der Hintergrundfarbe eines TextGadget:
Code: Alles auswählen
OpenWindow(0, 100, 100, 250, 210, "Get background color")
TextGadget(0, 10, 10, 230, 90, "", #PB_Text_Border)
SetGadgetColor(0, #PB_Gadget_BackColor, $CDEBFF) ; X11-Farbe "Blanched almond"
SetGadgetText(0, "$" + Hex(GetGadgetColor(0, #PB_Gadget_BackColor)))
TextGadget(1, 10, 110, 230, 90, "", #PB_Text_Border)
SetGadgetColor(1, #PB_Gadget_BackColor, $C1FFC1) ; X11-Farbe "DarkSeaGreen1"
SetGadgetText(1, "$" + Hex(GetGadgetColor(1, #PB_Gadget_BackColor)))
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Die Ermittlung der Hintergrundfarbe eines CanvasGadget funktioniert allerdings nicht mit GetGadgetColor(), weil das CanvasGadget ja eine Zeichenfläche ist und der Programmierer selbst für das Zeichnen zuständig ist. Dies erfolgt mit der 2DDrawing-Bibliothek innerhalb eines StartDrawing()/StopDrawing()-Blocks.
Bei unbekannter Hintergrundfarbe arbeitet MacOS mit systemspezifischen Namen.
Dieser Thread im englischen Forum zeigt dazu diverse Lösungsmöglichkeiten.
Ein plattform-unabhängiges Beispiel, den Hintergrund eines CanvasGadget mit der Hintergrundfarbe des aktuellen Fensters zu zeichnen, zeigt Keya in dem von RSBasic angegebenen Link.