2010-06-23 62 views
4

檢查出碼White顏色爲RGB不正確

const CGFloat *c = CGColorGetComponents([[UIColor whiteColor] CGColor]); 
slider1.value = c[0]; 
slider2.value = c[1]; 
slider3.value = c[2]; 

C [2]是越來越0。對於所有whiteColor RGB值SHLD爲1.0。爲什麼它不能爲藍色組件返回正確的值?

任何代碼片段?從白色獲取RGB值?

回答

8

嘗試CGColorGetColorSpace([[UIColor whiteColor] CGColor])

你會看到它是不是RGB。它只有2個分量:灰度和α-

+0

如何獲取RGB值呢? – coure2011 2010-06-23 10:58:38

+0

用於白色的顏色空間是灰度(1個分量和alpha)。要從灰度色彩中獲取RGB值,必須使用R,G和B的灰度值。 – 2010-06-23 11:19:52

+0

您可以給出一些代碼嗎? – coure2011 2010-06-23 11:30:18

0

該代碼段應與RGB和灰度工作:

CGFloat *components = (CGFloat *) CGColorGetComponents(<UIColor instance>.CGColor); 
if(CGColorGetNumberOfComponents(<UIColor instance>.CGColor) == 2) 
{ 
    //assuming it is grayscale - copy the first value 
    components[2] = components[1] = components[0]; 
} 
1

使用以下代碼: CGContextSetFillColorWithColor(CTX,[的UIColor whiteColor] .CGColor);

適用於顏色和灰度。