创建具有RGB值的NSColor

nan*_*ome 14 rgb cocoa objective-c

如何从RGB值创建NSColor?

Mat*_*all 17

根据NSColor文档:

NSColor *myColor = [NSColor colorWithCalibratedRed:redValue green:greenValue blue:blueValue alpha:1.0f];
Run Code Online (Sandbox Code Playgroud)

  • 值得明确的是,颜色值从0.0到1.0.此外,"校准"版本确实很可能是该方法的正确变体.您希望在所有内部颜色处理中使用NSCalibratedRGBColorSpace(对应于[NSColorSpace genericRGBColorSpace]).并且在输出到已知的特定设备时仅使用"设备"颜色空间变体. (5认同)
  • 你应该使用1.0f而不是1.0,因为1.0是双倍的,这不是iPhone的原生类型. (3认同)
  • @nash - iPhone上没有NSColor类型,NSColor是OSX上Cocoa的一部分 (3认同)

MiM*_*iMo 8

另外,请不要忘记从您获得的实际RGB值进行以下转换,让我们说从Photoshop ...

可以使用以下值将(226,226,226)的RGB实例化为NSColor:

Red:   226/255 = 0.886... 
Green: 226/255 = 0.886...
Blue:  226/255 = 0.886... 

[NSColor colorWithDeviceRed:0.886f green:0.886f blue:0.886f alpha:1.0f];
Run Code Online (Sandbox Code Playgroud)

为什么255?8位颜色通道的范围为0到255(含).归一化时,将其缩放到[0,1](含)范围.请参阅参考文献,了解从标准化值到非标准化值的转换,反之亦然.

参考

  • 这对其他人来说可能是显而易见的,但为什么+1呢?是因为256是一个更好的数字除以更多的因素,因此更少的舍入错误/小数点? (2认同)