首先,請注意,三個數字不描述顏色,三個數字連同一個顏色空間。 RGB不是一個色彩空間,它就是所謂的色彩模型。 RGB模型有很多顏色空間。因此((1,0,0),sRGB)與((1,0,0),Adobe RGB)顏色不同。你知道字符串編碼是如何工作的嗎?一堆字節本身不是一個字符串?這很像。這也是類似的,因爲無論何時您想查看組件值,都會遇到麻煩,因爲這是搞亂色彩空間處理的機會。
對不起,不能幫助自己。無論如何,我會回答這個問題,就好像你的原始顏色是((1,0,0),通用RGB)。
NSColor *color = [NSColor colorWithCalibratedRed:1 green:0 blue:0 alpha:1];
NSLog(@"hue! %g saturation! %g brightness! %g, [color hueComponent], [color saturationComponent], [color brightnessComponent]);
,並在另一方面,
NSColor *color = [NSColor colorWithCalibratedHue:h saturation:s brightness:b alpha:1];
NSLog(@"red! %g green! %g blue! %g, [color redComponent], [color greenComponent], [color blueComponent]);
這些fooComponent方法並非適用於所有顏色的工作,只有那些在兩個特定的色彩空間,看文檔。你已經知道你很好,如果你用上面的方法自己創建顏色。如果你有一個未知來源的顏色,你可以(嘗試)將它轉換成一個顏色空間,你可以在這個顏色空間中使用這些組合方法-[NSColor colorUsingColorspaceName:]
。
來源
2010-04-07 08:56:46
Ken
啊,真好。 :)感謝很多人。我假設整個Adobe RGB和sRGB不會是一個大問題,因爲iPhone使用了特定的顏色類型? – 2010-04-07 09:12:29