CGColorCreate()中的组件数量,如果色彩空间是索引颜色空间?

时间:2012-09-28 08:53:31

标签: objective-c macos cocoa quartz-graphics

我正在尝试使用CGColorSpaceCreateIndexed()来创建ColorRef。我想了解在使用索引颜色空间时传递组件数组的规则。

CGColorRef CGColorCreate (
   CGColorSpaceRef colorspace,
   const CGFloat components[]
);

Apple doc说,该数组应包含n + 1个值,这些值对应于指定颜色空间中的n个颜色分量,后跟alpha分量。

unsigned char colorTable[] = {2,120,150,180,200,220,10, 30};
CGColorSpaceRef cs = CGColorSpaceCreateIndexed(CGColorSpaceCreateDeviceCMYK(), 1, colorTable);

现在,如果我使用此颜色空间创建颜色,

const CGFloat myComponentArray[] = ??;
CGColorRef colorref = CGColorCreate (cs, myComponentArray);

myComponentArray应该是什么?它应该依赖于在创建索引颜色空间时传入的基色空间吗?

1 个答案:

答案 0 :(得分:3)

对于索引颜色空间,颜色有一个组件,它是颜色表的索引:

CGFloat myComponentArray[] = { index, alpha };

在您的情况下,颜色表有2个条目,因此索引必须为0或1。