【发布时间】:2013-10-31 13:13:34
【问题描述】:
我正在编写一个asp.net 应用程序,我必须完成以下两项任务:
根据用户输入“n”生成“n”个随机颜色(n 是用户想要生成的颜色数)。
所有生成的颜色都应该是纯色。
注意:我应该只生成纯色,因为当我在另一种颜色(color_old)之上覆盖一种颜色(color_new)时,被覆盖的颜色(color_old)应该不再可见。
我做了什么:
我在C#(文件后面的代码)中编写了以下代码,用于生成随机颜色,并且工作正常。
private Color GenerateNewColor()
{
var values = Guid.NewGuid().ToByteArray().Select(b => (int)b);
int red = values.Take(5).Sum() % 255;
int green = values.Skip(5).Take(5).Sum() % 255;
int blue = values.Skip(10).Take(5).Sum() % 255;
return Color.FromArgb(255,red, green, blue);
}
现在我的问题是“我应该如何确保上述函数生成的颜色是纯色?”
提前致谢。
【问题讨论】:
-
纯色是什么意思?
-
固体是指没有透明度吗?
-
您将 alpha 设置为 255,因此它们是纯色。
-
您采用了一种有趣的方式来生成随机值顺便说一句。不知道我是喜欢还是讨厌:)
-
关于你的“随机性”,有什么理由特别是根据 GUID 的字节值模数生成它们而不使用
Random.Next(256)?编辑:另外,您是否打算引入一种方法来处理避免随机选择重复颜色(尽管这种情况可能很罕见)或确保最小程度的变化(这样您就不会从黑色变为非常非常非常深灰色)所以它不会被用户感知为相同的颜色?