介绍一下如何设置CGColor颜色值

来源:互联网 发布:mac可以用手绘板吗 编辑:程序博客网 时间:2024/06/18 16:24

之前发了一篇关于如何在iPhone中使用渐变的文章,忽然想起来本站并没有相关介绍颜色的文章。这里简单介绍一下如何取CGColor的颜色值,最好你对色彩的构成有一点基础,如果会用Photoshop就更好了,因为本文内容中会掺杂有一点Photoshop的知识。这篇文章的内容同时支持Mac与iPhone。

要在屏幕上显示颜色,通常需要使用RGB去表示。R表示红、G表示绿、B表示蓝。CMYK也是用于表示颜色的方法,但是由于CMYK是用于印刷,因此RGB范畴内的颜色有一些是无法用CMYK表示的(比如比较亮的萤光色)。它们之间的差别主要是RGB表示的是发光物体的颜色(屏幕本身是发光直射到眼睛的),而CMYK表示的是反射光(比如纸上的图,是别的物体比如太阳或者灯发光,通过它反射到我们眼睛里,我们才看到颜色)。这里面比较深入的内容如果你有兴趣请你去搜索。

如果你了解一点web上取颜色的方法,你应该知道web中颜色的数值是这样表示的:

#FFCC00 表示一种亮黄,前两位FF是红色分量,CC是绿色分量,00是蓝色分量。00表示黑,也就是没有这个颜色,FF表示这个颜色的最大值。这个数字越小越暗(屏幕不发光),越大越亮(光越强)。

 

通过Core Library的文档,我们知道创建颜色有这么几个方法:

CGColorCreate
CGColorCreateCopy
CGColorCreateGenericGray
CGColorCreateGenericRGB
CGColorCreateGenericCMYK
CGColorCreateCopyWithAlpha
CGColorCreateWithPattern

再来看一下CGColorCreate

CGColorRef CGColorCreate (

CGColorSpaceRef colorspace,

const CGFloat components[]

);

 

我们通过CGColorCreate就可以创建颜色。既然我们要用RGB表示颜色,那么colorspace这个参数我们就可以使用CGColorSpaceCreateDeviceRGB(),而我们主要来探讨components这个参数。

 

这个参数是一个数组,带有4个数值:

 

float color[]={红色分量, 绿色分量, 蓝色分量, alpha分量};

 

这4个数值都是0-1区间,0表示黑(不发光),数字越大这种颜色的光线越强,alpha分量表示透明度。比如{1.0, 0, 0,1.0}就是纯红色而且完全不透明。

 

纯红、纯绿、纯蓝很简单,可是如何在程序中使用我想要的其他颜色呢?

 

比如我想使用渐变创建下面这幅图,我先用Photoshop选两个颜色,把它画出来:

 

 

用Photoshop取色的比较简单的方法是先按热键B,选择画笔,然后按住option(Windows版是alt),鼠标指针就变成了吸管。在需要取色的地方按一下,当前颜色就设置成了鼠标位置上的颜色。

 

我们就得到了这两个不同的蓝色。

点一下工具条上的当前色,拾色器就出来了:

 

我们可以看到比较浅的这个蓝色的RGB数值是:174,201,255。

 

那么我们需要的CGColor的颜色是什么呢?就是{174/255, 201/255, 255/255, 1.0} 因为Photoshop中RGB颜色的范畴是0-255,我们只需要做一下除法就可以了。

 

结果就是

 

float lightblue[]={0.6824f, 0.7882f, 1.0f, 1.0f};

 

同理,深一点的那个蓝色的值

 

就是 {0, 58/255, 163/255, 1.0},也就是

 

float darkblue[]={0.0f, 0.2275f, 0.6392f, 1.0f};

 

这样一来,你就可以用CGColor在程序中画出任何你想要的颜色了。

    原创粉丝点击