随机生成颜色类似的另一种颜色
问题描述:
在我的应用程序,我随机通过下面的函数产生一个颜色:随机生成颜色类似的另一种颜色
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];
我与上面遇到的问题是,它是产生新的颜色是比原来的颜色截然不同。原来的颜色是绿色的阴影,新的颜色是明亮的紫色。当我的价值观,我越来越疯狂的数字,所以显然有些事情会出错。
提前致谢!
答
您有
float x = (20-counter)/10;
给定的计数器是一个int,(20-计数器)/ 10只能是0,1或2。 你必须添加类型铸:
float x = (float)(20-counter)/10;
或更容易
float x = (20f - counter)/10f;
发布的代码有什么问题?你解释你想要的,你张贴代码,但你没有说明问题是什么。 – rmaddy 2014-09-23 20:25:42
刚更新了它。 – Andrew 2014-09-23 20:28:46
你需要澄清你的意思是“相似的颜色”。简单地移动RGB值几乎意味着颜色不会相似,除非您只更改其中的一个。您可能会更喜欢使用HSB值。也许色调的微小变化,然后饱和度和亮度的变化会更好地适合您的“相似”的定义。 – rmaddy 2014-09-23 20:31:52