HI,
als generelles API-Greenhorn habt ihr mir schon bei der Findung des Systemhintergrunds bei WIN geholfen. PB liefert das ja nicht mit eigenen Befehlen.
hgr = getsyscolor_(#colorbtnface)
Wie geht das auf McOSX?
Ich benutzt den Hintergrund zum "Löschen" von canvasgadgets, die auf Fenstern oder auf(?)/in(?) frames liegen.
background color
Re: background color
Hier gibt es einen Code für Windows, Linux und MacOS, um die Fenster-Hintergrundfarbe zu ermitteln: http://www.purebasic.fr/english/viewtopic.php?t=66974
Re: background color
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:
Ermittlung der Hintergrundfarbe eines TextGadget:
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.
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
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
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.