NSColor: colorWithDeviceRed ... не работает на втором мониторе - PullRequest
0 голосов
/ 18 июля 2011

Чтобы иметь возможность калибровать монитор, я должен иметь возможность управлять им в значениях RGB устройства.

Для этого я создаю NSColor с помощью:

[NSColor colorWithDeviceRed:(colorsPtr[cnt]/255.0f) green:(colorsPtr[cnt+1]/255.0f)
blue:(colorsPtr[cnt+2]/255.0f) alpha:1.0]

А потом я поставил этот цвет на вид.

[colorView setColor:[colorsForMeasuring objectAtIndex:index]];

Когда я использую «Цифровой измеритель цвета», этот цвет устройства применяется без преобразования, только когда вид отображается на основном мониторе. Так что только на мониторе, на котором есть строка меню.

Если вы поместите изображение на второй монитор, это выглядит так, как будто происходит преобразование из RGB основного дисплея в RGB второго дисплея. Вы видите это только в том случае, если между двумя дисплеями есть большая разница. У меня есть MacBook Pro с Eizo ColorEdge CG 245, например. Если вы тогда поставите [0 0 1,0], вы можете получить что-то вроде [0,2 0,1 1,0].

Кто-нибудь знает, как избавиться от этого дополнительного преобразования. На мой взгляд, deviceRGB должен быть deviceRGB. Чтобы сделать профиль для второго монитора, это обязательно. Теперь мне нужно переместить меню на второй монитор, создать профиль и переместить его обратно. Но с нашим приложением клиенты должны быть в состоянии сделать проверку, и это нужно делать часто. И здесь возникают те же проблемы.

1 Ответ

0 голосов
/ 18 июля 2011

Это звучит как ошибка для меня.Я предлагаю сообщить об этом .

В качестве обходного пути вы можете попробовать реализовать пользовательское представление, в котором вы отвечаете на drawRect:, вызывая CGContextSetRGBFillColor и CGContextFillRect.(Вы можете получить CGContext от текущего NSGraphicsContext .)

...