NSWindow Farb Codes stimmen nicht

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • NSWindow Farb Codes stimmen nicht

    Hi,

    übergebe ich einen RGB Code an OpenGL, benutze dann in der App eine andere Color Picker App, stimmt der Farbcode überein.
    übergebe ich einen RGB Code an ein Cocoa Widget, z.B. NSTableView, benutze dann den Color Picker stimmt der Farbcode nicht überein. (geringe sichtbare Abweichung)
    Ich habe schon einiges mit verschieden Color Spaces versucht aber ohne Erfolg.
    Ich habe keinen Schimmer wo ich ansetzen soll.
  • Cocoa/macOS sollte den deviceRGBColorSpace verwenden

    Du könntest mal versuchen, die Farbe mit dem genericRGBColorSpace zu erzeugen.

    Weiterhin kannst Du in der Digital Color Meter App die Werte auch in einem anderen Color Space anzeigen lassen.

    In den Systemeinstellungen unter Monitor > Farben kannst Du ein Farbprofil für den Monitor auswählen. Danach sollte sich dann der deviceRGBColorSpace richten.
  • Danke, ich habe jetzt neben den Widgets für das gesamte NSWindow, welches den OpenGL Kontext darstellt, den color space gesetzt. Auf diese Weise wird auch das openGL Rendering beeinflusst.

    NSWindow: [self setColorSpace: [NSColorSpace deviceRGBColorSpace]];
    Widgets (z.b. NSTableView background) : colorWithDeviceRed: green: blue: alpha: 1.0

    Nun stimmen die Farben des OpenGL renderings mit denen der Cocoa Widgets überein.

    Stelle ich von 'device' auf 'sRGB' um, erhalte ich das selbe Ergebnis. Ich versuche zu verstehen ob das immer so ist und ob ich 'sRGB' dem 'device' vorziehen sollte.

    NSWindow: [self setColorSpace: [NSColorSpace sRGBColorSpace]];
    Widgets (z.b. NSTableView background) : colorWithSRGBRed: green: blue: alpha: 1.0
  • Wie Dir MCDan bereits mitgeteilt hat ist RGB die besser Wahl. Jedes Device z.B. Monitor, Drucker oder Scanner stellen hierfür bereits werkseitige Profile bereit.
    Das auf dem Monitor angezeigte Ergebnis entspricht somit dem erwarteten Ausdruck bzw. vice versa.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von OSXDev ()