background color

MAC OSX spezifisches Forum
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

background color

Beitrag von kartmanne »

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.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: background color

Beitrag von RSBasic »

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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Shardik
Beiträge: 738
Registriert: 25.01.2005 12:19

Re: background color

Beitrag von Shardik »

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.
Antworten