2012-12-10 21 views
2

如果我直接使用的顏色,它的工作原理工作。但是,如果我想保存rgb和alpha的顏色值,它不起作用。它沒有畫任何東西。的UIColor不與它自己的特性

UIColor *aaa = [UIColor grayColor]; 
float r,g,b,a; 

[aaa getRed:&r green:&g blue:&b alpha:&a]; 
aaa = [UIColor colorWithRed:r green:g blue:b alpha:a]; 

CGColorRef col = aaa.CGColor; 

如何保存我的rgb?

+0

什麼不起作用?更好地解釋。 –

+0

你的問題是什麼?在你的代碼中,你創建一個常量灰色的UIColor對象。然後你會收到它的rgba值。 R,g和b應該具有相同的值,因爲它們代表某種灰色陰影。 A會是1.0f。然後你創建一個具有相同值的新顏色,並驅動這個非常灰暗的CGColorRef。你能指望什麼? –

+0

在這些行之後,我在CGContext中繪製了一些行。如果我不改變aaa,它會吸引他們,否則它不會。我在問爲什麼它不能正確接受自己的屬性,我如何使用整數保存我的顏色。 –

回答

2

我相信你的問題是,grayColor不與色彩空間這是兼容的定義與getRed:green:blue:alpha:方法。您可以通過將rgba值初始化爲某種顏色不可能的東西來驗證這一點,並注意它們未被調用所改變,這與記錄的返回行爲相匹配。或者,將grayColor替換爲明確包含顏色的內容,如cyanColorgetRed:green:blue:alpha:方法的工作原理。

下面是一些代碼來演示:

float r = 5.0,g = 6.0,b = 7.0,a = 8.0, w = 3.0, a2 = 4.0; 
UIColor *aaa = [UIColor grayColor]; 
[aaa getRed:&r green:&g blue:&b alpha:&a]; 
[aaa getWhite:&w alpha:&a2]; 

(在OS X上有對色彩空間之間進行轉換的方法,但我沒有看到的iOS當量)。

+0

是的,絕對。我找不到我的問題,因爲我有一些類型的對話錯誤。 –

-1

您必須初始化花車,否則引用&樓&克,& B,&參考什麼:

UIColor *aaa = [UIColor grayColor]; 
float r = 0.0f, g = 0.0f, b = 0.0f, a = 0.0f; 

[aaa getRed:&r green:&g blue:&b alpha:&a]; 
aaa = [UIColor colorWithRed:r green:g blue:b alpha:a]; 

CGColorRef col = aaa.CGColor; 
+1

不,不需要初始化值。使用getRed:greeen:blue:alpha:方法重新設置值時設置值。 –

相關問題