2011-07-18 11 views
1

CGColorからrgb値を取得しようとしています 私はfollowigコードを使用します。問題は、赤、緑、青の戻り値は常にfloatとして返され、常に0と1の間です。rgb(0.000000, 0.847059, 0.945098)CGColor - CGColorGetComponentsが正しく動作していないようですか?

これらの値を実際の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値を返します。あなたの赤場合= 0.8だから、そう、あなたのコードは次のようになります204

ある255の80%です。

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

私はそれが乗算の前に整数として値をキャストするのは間違っていると思います。可能な値は0と255の2つしかありません。 – Joe

+0

oo私はコードをコピーしていませんでしたので、私のために働きました。 – aryaxt

関連する問題