#objective-c
#objective-c
Вопрос:
я пытаюсь составить цвета, используя NSColor, и когда я пытаюсь создать цвет RGB со следующими значениями, вместо этого просто отображаются белые цвета:
(r,g,b):(50,50,50)
(r,g,b):(100,100,100)
(r,g,b):(150,150,150)
(r,g,b):(200,200,200)
и т.д…
код, используемый для создания цветов, является:
// код для создания простых изображений с фоновыми цветами
NSColor * myColor = [NSColor colorWithDeviceRed:100.0 green:100.0 blue:100.0 alpha:1.0];
NSImage* image1 = [[NSImage alloc] initWithSize:NSMakeSize(10.0, 100.0)];
NSRect imageBounds1 = NSMakeRect (0, 0, 10, 100);
[image1 lockFocus];
[myColor set];
NSRectFill (imageBounds1);
[image1 unlockFocus];
Я не смог найти ни одного ресурса или образца в Интернете, который предоставлял бы какую-либо помощь по моим вышеупомянутым запросам.Я был бы очень признателен, если бы кто-нибудь поделился своей мудростью о том, как я могу этого добиться.
Заранее спасибо..
Ответ №1:
Если я правильно помню, вам также понадобится диапазон 0-1 в качестве вашего RGB
Ответ №2:
Компоненты NSColor имеют значения в [0 .. 1], поэтому вам следует нормализовать имеющиеся у вас значения, например:
NSColor * myColor = [NSColor colorWithDeviceRed:100.0/255 green:100.0/255 blue:100.0/255 alpha:1.0];
Если вы попытаетесь задать цветовым компонентам значения больше 1, то они будут интерпретироваться как 1, так что ваш код будет фактически эквивалентен
NSColor * myColor = [NSColor colorWithDeviceRed:1.0 green:1.0 blue:1.0 alpha:1.0];
Которое создает белый цвет.
Ответ №3:
Как указано в документации:
Значения ниже 0.0 интерпретируются как 0.0, а значения выше 1.0 интерпретируются как 1.0
Это означает, что ваши значения (100,100,100) будут преобразованы в (1.0, 1.0, 1.0), который является белым. Что вам нужно сделать, это преобразовать значение каждого канала, используя следующее уравнение:
100 : 255 = x : 1.0 => x = 100/255
где x — это значение, которое вы будете использовать для метода
-(NSColor*)colorWithDeviceRed:CGFloat red green:CGFloat green blue:CGFloat blue alpha:CGFloat alpha];
У вас должно быть что-то подобное в вашем коде
[NSColor colorWithDeviceRed:100.0/255.0 green:100.0/255.0 blue:100.0/255.0 alpha:1.0];