Iphone CGColor-CGColorGetComponents不';好像工作不正常?
我试图从CGColor中获取rgb值 我使用下面的代码。问题是,红色、绿色和蓝色的所有返回值始终以浮点形式返回,并且它们始终在0和1之间,例如: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
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中。