0
在我的應用程序,我隨機通過下面的函數產生一個顏色:隨機生成顏色類似的另一種顏色
UIColor *origionalRandomColor = [UIColor
colorWithRed:arc4random_uniform(255)/255.0
green:arc4random_uniform(255)/255.0
blue:arc4random_uniform(255)/255.0
alpha:1.0];
我想產生類似的顏色上面,這也是隨機的。我想用一個常量來確定新顏色與舊顏色的相似程度。
我一直在試圖做到這一點,首先取red
價值,產生一個小的隨機數,並隨機選擇添加或減去它,形成一種新的顏色。然後重複和blue
的過程。然後我可以重新組裝新的相似顏色。
在以下代碼中,counter
是int
。當counter
是1時,我希望差異比計數器爲20時更明顯。
我試圖做這樣的:
CGFloat red = 0.0, green = 0.0, blue = 0.0, alpha =0.0;
[origionalRandomColor getRed:&red green:&green blue:&blue alpha:&alpha];
//Randomly generates a 0 or 1
//0 results in subtracting - 1 results in adding the value
int AddSubtract = arc4random() %2;
// double val = 20 - couter;
// val = val/10 - 1;
// if (val < .2) {
// val = .2;
// }
// float x = (arc4random() % 100)/(float)100;
// NSLog(@"**********%f", x);
// x = x/((float)counter/100);
// NSLog(@"----------%f", x);
float x = (20-counter)/10;
NSLog(@"----------%f", x);
if (AddSubtract == 0) //subtract the val
red -= x;
else //add the val
red += x;
//Then repeated for green/blue
UIColor *newColor = [UIColor colorWithRed:red green:green blue:blue alpha:1.0];
我與上面遇到的問題是,它是產生新的顏色是比原來的顏色截然不同。原來的顏色是綠色的陰影,新的顏色是明亮的紫色。當我的價值觀,我越來越瘋狂的數字,所以顯然有些事情會出錯。
提前致謝!
發佈的代碼有什麼問題?你解釋你想要的,你張貼代碼,但你沒有說明問題是什麼。 – rmaddy 2014-09-23 20:25:42
剛更新了它。 – Andrew 2014-09-23 20:28:46
你需要澄清你的意思是「相似的顏色」。簡單地移動RGB值幾乎意味着顏色不會相似,除非您只更改其中的一個。您可能會更喜歡使用HSB值。也許色調的微小變化,然後飽和度和亮度的變化會更好地適合您的「相似」的定義。 – rmaddy 2014-09-23 20:31:52