2012-05-01 47 views
1

如何製作一種從0-50變爲浮動的方法,併發出均勻強度的綠色?從有限輸入因子的黑色變爲綠色

因此,如果輸入的值是0,顏色爲黑色:

[UIColor colorWithRed:0 green:0 blue:0]; 

如果輸入值是50,顏色是最大綠色:

[UIColor colorWithRed:0 green:255.0/255.0 blue:0]; 

所以,如果輸入因子位於中間的某個位置,那麼顏色應該位於中間的某個位置。所以從0-50,它應該從最黑的綠色變成最輕的綠色。應該是簡單的,但我不知道我錯過了什麼:

//factor is a float from 0-50 
UIColor *greenColor = [UIColor colorWithRed:0 green:factor/255.0 blue:0 alpha:1.0]; 

此代碼生成一個綠顏色,但不會波動太大,所以你只看到一個遮陽的綠色。

回答

3

您需要根據您自己的最大值(50)縮放RGB最大值(255)。和所有你需要的是非常簡單的數學:

colorVal = 255 * x/50 

其中x是從0到50所以上規模的intesity:你希望它是

255 * 0/50 = 0 
255 * 50/50 = 255 
255 * 25/50 = 128 (rounded up from 127.5) 
1

你的範圍只能從0.0/255.0 -> 50.0/255.00.0 to 1.0;因爲你可以嘗試factor/50.0

1

首先,你要讓數學太難。看起來像[UIColor ... green: ...]值應該範圍從0.0到1.0,所以值計算可以簡單地是:

CGFLoat value = factor/50.0; 
UIColor *greenColor = [UIColor colorWithRed:0 green:(value) blue:0 alpha:1] 

這將使0.0時factor = 0和1.0時factor = 50的值。除此之外,雖然我不確定 - 也許無論實際繪圖是否進行量化或使用有限的調色板工作?

+0

雅我是過於複雜的方式:/ – Snowman

相關問題