我试图绘制一个完整的RGB色彩地图,最终将允许用户通过点击该视觉地图在任何点上选择一种颜色。我目前的代码如下:如何绘制一个好的RGB色彩图?
- (void)drawRect:(CGRect)rect
{
CGContextRef c = UIGraphicsGetCurrentContext();
for (float x=0; x<320; x++) {
for (float y=0; y<416; y++) {
float r = x/320;
float g = y/416;
float b = (y < 208) ? y/208 : (416 - y)/208;
CGContextSetRGBFillColor(c, r, g, b, 1.0);
CGContextFillRect(c, CGRectMake(x, y, 1, 1));
}
}
}
结果不是太差,但我还不满意。光谱没有明亮的颜色,包括白色。原因很明显:红色,绿色和蓝色同时不会达到1.0。
你有任何建议如何改善这种地图,它代表了RGB色彩空间的全谱?
感谢您的所有意见!
UPDATE:
至于建议由乔什 - 卡斯威尔我用过的HSB色彩空间和下面的代码:
- (void)drawRect:(CGRect)rect
{
CGContextRef c = UIGraphicsGetCurrentContext();
int size = 20;
for (float x=0; x<320; x+=size) {
float s = x < 160 ? 1 : (320 - x)/160;
float b = x < 160 ? x/160 : 1;
for (float y=0; y<416; y+=size) {
float h = y/416;
[[UIColor colorWithHue:h saturation:s brightness:b alpha:1.0] setFill];
CGContextFillRect(c, CGRectMake(x, y, size, size));
}
}
}
这导致下面的输出很适合我需要。
感谢所有输入!
感谢分享代码;那真的很棒! – 2011-06-08 22:48:17
最终的结果确实很美。我希望没有人需要灰色;你可能想沿着右边做一系列的灰色。 – 2011-06-09 17:08:37
这是一个很好的补充。谢谢。 – 2011-06-09 19:26:40