Iphone CGColor-CGColorGetComponents不';好像工作不正常?

Iphone CGColor-CGColorGetComponents不';好像工作不正常?,iphone,objective-c,rgb,cgcolor,Iphone,Objective C,Rgb,Cgcolor,我试图从CGColor中获取rgb值 我使用下面的代码。问题是,红色、绿色和蓝色的所有返回值始终以浮点形式返回,并且它们始终在0和1之间,例如:rgb(0.000000,0.847059,0.945098) 如何转换这些val;使用真实rgb值 int numComponents = CGColorGetNumberOfComponents(color); if (numComponents == 4) { const CGFloat *components = CGColor

我试图从CGColor中获取rgb值 我使用下面的代码。问题是,红色、绿色和蓝色的所有返回值始终以浮点形式返回,并且它们始终在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];
}

它返回以百分比表示的正确rgb值。所以如果你的红色=0.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];
}

它返回以百分比表示的正确rgb值。所以如果你的红色=0.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];
}

这些是真实的RGB值。你到底期望什么?这些是真实的RGB值。你到底在期待什么?谢谢你解决了这个问题。我相信在乘法之前将值转换为整数是不正确的。在这一点上,只有两个可能的值是0和255。哦,我没有复制我使用的代码,所以它适用于Metat乘法代码似乎不正确。由于整数强制转换/截断,只有正好为1.0的浮点值将以这种方式变为255;值0.999将变为254,这是不需要的,因为它也应该是255。结果不应该是254,直到一直下降到0.996左右。我想你应该乘以255.999而不是255。这将导致更好的整数0到255的分布。多亏了它解决了这个问题,我相信在乘法之前将值转换为整数是不正确的。在这一点上,只有两个可能的值是0和255。哦,我没有复制我使用的代码,所以它适用于Metat乘法代码似乎不正确。由于整数强制转换/截断,只有正好为1.0的浮点值将以这种方式变为255;值0.999将变为254,这是不需要的,因为它也应该是255。结果不应该是254,直到一直下降到0.996左右。我想你应该乘以255.999而不是255。这将导致更好地分布到整数0到255中。