随机生成颜色类似的另一种颜色

问题描述:

在我的应用程序,我随机通过下面的函数产生一个颜色:随机生成颜色类似的另一种颜色

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的过程。然后我可以重新组装新的相似颜色。

在以下代码中,counterint。当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]; 

我与上面遇到的问题是,它是产生新的颜色是比原来的颜色截然不同。原来的颜色是绿色的阴影,新的颜色是明亮的紫色。当我的价值观,我越来越疯狂的数字,所以显然有些事情会出错。

提前致谢!

+0

发布的代码有什么问题?你解释你想要的,你张贴代码,但你没有说明问题是什么。 – rmaddy 2014-09-23 20:25:42

+0

刚更新了它。 – Andrew 2014-09-23 20:28:46

+3

你需要澄清你的意思是“相似的颜色”。简单地移动RGB值几乎意味着颜色不会相似,除非您只更改其中的一个。您可能会更喜欢使用HSB值。也许色调的微小变化,然后饱和度和亮度的变化会更好地适合您的“相似”的定义。 – rmaddy 2014-09-23 20:31:52

您有

float x = (20-counter)/10; 

给定的计数器是一个int,(20-计数器)/ 10只能是0,1或2。 你必须添加类型铸:

float x = (float)(20-counter)/10; 

或更容易

float x = (20f - counter)/10f;