2011-07-18 180 views
1

我想從CGColor中獲取rgb值 我使用followig代碼。問題是所有紅色,綠色和藍色的返回值總是以float形式返回,並且它們始終在0和1之間,例如:rgb(0.000000, 0.847059, 0.945098)CGColor - CGColorGetComponents似乎不能正常工作?

如何將這些val; ues轉換爲真正的rgb值?

int numComponents = CGColorGetNumberOfComponents(color); 

if (numComponents == 4) 
{ 
     const CGFloat *components = CGColorGetComponents(color); 
    CGFloat red = components[0]; 
    CGFloat green = components[1]; 
    CGFloat blue = components[2]; 
    CGFloat alpha = components[3]; 
} 
+1

那些*是*真正的RGB值。你到底在期待什麼? –

回答

5

它返回以百分比表示的正確rgb值。所以,如果你的Red = 0.8是255 80%是204

使你的代碼看起來是這樣的:

int numComponents = CGColorGetNumberOfComponents(color); 

if (numComponents == 4) 
{ 
    const CGFloat *components = CGColorGetComponents(color); 
    NSInteger red = (NSInteger) components[0] * 255; 
    NSInteger green = (NSInteger) components[1] * 255; 
    NSInteger blue = (NSInteger) components[2] * 255; 
    CGFloat alpha = components[3]; 
} 
+0

謝謝修復問題 – aryaxt

+2

我確實認爲這是不正確的,它會在乘法之前將值轉換爲整數。在這一點上只有2個可能的值將是0和255. – Joe

+0

oo我沒有複製代碼我用這個想法,所以它爲我工作 – aryaxt

相關問題