所以我对一个简单的随机颜色生成器类有一点问题,尽管每次应用程序启动时都不会停止生成相同的颜色集。
这是仅在第一次使用时才会发生的问题。 然而 Random对象初始化与第一代通话之间的时间是用户决定。所以我真的不知道是什么导致它
这是我的代码:
/// <summary>
/// Random number generator
/// </summary>
static Random Random;
public static void Initialize()
{
//Intializes the random number generator
Random = new Random();
}
/// <summary>
/// Generates a random color
/// </summary>
/// <returns></returns>
public static Color GenerateOne()
{
while (true)
{
Color clr = Color.FromArgb(RandByte(), RandByte(), RandByte());
float sat = clr.GetSaturation();
if (sat > 0.8 || sat < 0.2)
{
continue;
}
float brgt = clr.GetBrightness();
if (brgt < 0.2)
{
continue;
}
return clr;
}
}
/// <summary>
/// Generates a set of random colors where the colors differ from each other
/// </summary>
/// <param name="count">The amount of colors to generate</param>
/// <returns></returns>
public static Color[] GenerateMany(int count)
{
Color[] _ = new Color[count];
for (int i = 0; i < count; i++)
{
while (true)
{
Color clr = GenerateOne();
float hue = clr.GetHue();
foreach (Color o in _)
{
float localHue = o.GetHue();
if (hue > localHue - 10 && hue < localHue + 10)
{
continue;
}
}
_[i] = clr;
break;
}
}
return _;
}
/// <summary>
/// Returns a random number between 0 and 255
/// </summary>
/// <returns></returns>
static int RandByte()
{
return Random.Next(0x100);
}
}
Screenshot of repeating color scheme if needed
提前致谢:)
答案 0 :(得分:0)
抱歉浪费你的时间。 原来它不是发电机故障,它是使用它的自定义控制。 基本上,自定义控件将其颜色集存储在由表单设计器代码覆盖的属性中(生成在InitializeComponent()之前的属性初始化期间发生)。 它本质上只是一个[Bindable(false)]属性。
所以是的...无论如何,谢谢你的建议:)