Как я получаю шестнадцатеричное значение объекта NSColor?
Q: Как я получаю шестнадцатеричное значение объекта NSColor?
A: Как я получаю шестнадцатеричное значение объекта NSColor?
Ниже шаги, требуемые получить шестнадцатеричное значение объекта NSColor.
Преобразуйте цветовой объект в цветовое пространство RGB.
Этот шаг важен для него, недопустимо для доступа к компонентам NSColor, не определяющимся для его цветового пространства. Используйте
colorUsingColorSpaceNameметод для преобразования цвета в цветовое пространство RGB.Получите красные, зеленые, и синие компоненты цвета.
Эти компоненты являются значениями с плавающей точкой на домене [0, 1] с минимальной интенсивностью, являющейся 0 и максимальной интенсивностью, являющейся 1. Используйте
getRed:(CGFloat *)red green:(CGFloat *)green blue:(CGFloat *)blue alpha:(CGFloat *)alphaметод для получения красного цвета, зеленые, и синие компоненты.Преобразуйте компоненты в веб-цветовое пространство, состоящее из чисел (десятичное целое число без знака) между 0 и 255.
Цель здесь состоит в том, чтобы произвести три двухразрядных шестнадцатеричных компонента цвета со значениями, колеблющимися от 0x00 (0 десятичных чисел, минимальная интенсивность) через 0xFF (255 десятичных чисел, максимальная интенсивность).
Преобразуйте каждое число в двухразрядную шестнадцатеричную строку.
Свяжите шестнадцатеричные строки красных, зеленых, и синих компонентов вместе с «#».
Перечисление 1 показывает, как программно реализовать эти шаги; это создает Objective C category это добавляет hexadecimalValueOfAnNSColor метод к классу NSColor.
Перечисление 1 , Добавляющее категорию к NSColor.
#import <Cocoa/Cocoa.h>
@interface NSColor(NSColorHexadecimalValue)
-(NSString *)hexadecimalValueOfAnNSColor;
@end
@implementation NSColor(NSColorHexadecimalValue)
-(NSString *)hexadecimalValueOfAnNSColor
{
float redFloatValue, greenFloatValue, blueFloatValue;
int redIntValue, greenIntValue, blueIntValue;
NSString *redHexValue, *greenHexValue, *blueHexValue;
//Convert the NSColor to the RGB color space before we can access its components
NSColor *convertedColor=[self colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
if(convertedColor)
{
// Get the red, green, and blue components of the color
[convertedColor getRed:&redFloatValue green:&greenFloatValue blue:&blueFloatValue alpha:NULL];
// Convert the components to numbers (unsigned decimal integer) between 0 and 255
redIntValue=redFloatValue*255.99999f;
greenIntValue=greenFloatValue*255.99999f;
blueIntValue=blueFloatValue*255.99999f;
// Convert the numbers to hex strings
redHexValue=[NSString stringWithFormat:@"%02x", redIntValue];
greenHexValue=[NSString stringWithFormat:@"%02x", greenIntValue];
blueHexValue=[NSString stringWithFormat:@"%02x", blueIntValue];
// Concatenate the red, green, and blue components' hex strings together with a "#"
return [NSString stringWithFormat:@"#%@%@%@", redHexValue, greenHexValue, blueHexValue];
}
return nil;
}
@end |
Перечисление 2 , Получающее шестнадцатеричное значение объекта NSColor.
//aColor is an NSColor object NSString *hexValue=[aColor hexadecimalValueOfAnNSColor]; |
Дополнительные материалы для чтения
История версии документа
| Дата | Примечания |
|---|---|
| 19.12.2007 | Новый документ, описывающий, как преобразовать объект NSColor в его Шестнадцатеричное значение. |