CGColor - CGColorGetComponents似乎不能正常工作?

ary*_*axt 1 iphone rgb objective-c cgcolor

我试图从CGColor获取rgb值我使用followig代码.问题是红色,绿色和蓝色的所有返回值总是以浮点形式返回,并且它们总是在0和1之间,例如:rgb(0.000000, 0.847059, 0.945098)

我如何将这些val转换为真正的rgb值?

int numComponents = CGColorGetNumberOfComponents(color);

if (numComponents == 4)
{
        const CGFloat *components = CGColorGetComponents(color);
    CGFloat red = components[0];
    CGFloat green = components[1];
    CGFloat blue = components[2];
    CGFloat alpha = components[3];
}
Run Code Online (Sandbox Code Playgroud)

Cyp*_*ian 5

它返回以百分比表示的正确rgb值.所以,如果你的红色= .8,它是255的80%,即204

所以你的代码看起来像这样:

int numComponents = CGColorGetNumberOfComponents(color);

if (numComponents == 4)
{
    const CGFloat *components = CGColorGetComponents(color);
    NSInteger red = (NSInteger) components[0] * 255;
    NSInteger green = (NSInteger) components[1] * 255;
    NSInteger blue = (NSInteger) components[2] * 255;
    CGFloat alpha = components[3];
}
Run Code Online (Sandbox Code Playgroud)

  • 我确实认为在乘法之前将值转换为整数是不正确的.此时仅有的两个可能值为0和255. (2认同)