提问人:L. Kvri 提问时间:2/22/2012 更新时间:2/22/2012 访问量:1243
在 Objective-C 中获取颜色的组件
get components of color in objective-c
问:
这是获取颜色的RGB组件的代码片段。如果_countComponents小于 4,例如 2,我该怎么办?我试图获取灰色 [UIColor grayColor] 的组件
int _countComponents = CGColorGetNumberOfComponents(colorRef);
if (_countComponents == 4) {
const CGFloat *_components = CGColorGetComponents(colorRef);
CGFloat red = _components[0];
CGFloat green = _components[1];
CGFloat blue = _components[2];
CGFloat alpha = _components[3];
答:
1赞
sch
2/22/2012
#1
颜色的分量取决于关联的色彩空间。
所以 、 等不是必需的红色、绿色、蓝色和 alpha。_components[0]
_components[1]
6赞
Caleb
2/22/2012
#2
如果你有一个 UIColor 实例,并且想要它的 RGB 值,为什么不使用该方法呢?-getRed:green:blue:alpha:
CGFloat r, g, b, a;
BOOL success = [myColor getRed:&r green:&g blue:&b alpha:&a];
if (success) {
// the color was converted to RGB successfully, go ahead and use r,g,b, and a.
}
1赞
Peter M
2/22/2012
#3
新答案
重新阅读问题后。要回答格雷组件问题,您可以通过 -(BOOL)getWhite:alpha 读取它:
所以你会按照 Caleb 做这样的事情:
BOOL success = [myColor getWhite:&w alpha:&a];
这为您提供了 0 到 1 的灰度值和 0 到 1 的 alpha 值w
a
请参阅 Apple 文档 getWhite:alpha:
旧答案
从这个 SO 问题如何访问 uicolor 的颜色组件
请参阅(相当旧的)ArsTechnica 文章 iphone-development-accessing-uicolor-components
评论
0赞
Caleb
2/22/2012
+1 别再看问题了——你让我们其他人看起来很傻。
评论