C# 如何设置多个画布背景以增加单个颜色?

C# 如何设置多个画布背景以增加单个颜色?,c#,wpf,C#,Wpf,我想使用多个画布,并为每个画布设置不同的背景。我将画布的背景指定给随机颜色生成函数。但对于所有画布,它只返回一种颜色 wpf示例: <Grid> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.Column

我想使用多个画布,并为每个画布设置不同的背景。我将画布的背景指定给随机颜色生成函数。但对于所有画布,它只返回一种颜色

wpf示例:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
    </Grid.ColumnDefinitions>

    <Canvas Name="canvas1" Grid.Column="0"></Canvas>
    <Canvas Name="canvas2" Grid.Column="1"></Canvas>
</Grid>

Random类使用种子值生成其数字序列。通过在没有参数的情况下调用它,它将使用系统时钟作为种子,并且很可能在两个画布控件之间调用过快,因此最终对这两个控件使用相同的种子值。从:

但是,由于时钟分辨率有限,使用 无参数构造函数,用于在关闭状态下创建不同的随机对象 “序列”创建生成相同序列的随机数生成器 随机数序列

您可以向构造函数调用添加一个参数,但我认为这并不能真正解决您的问题。最好将Random的实例移出,并使其成为类成员的单个实例。i、 e

private Random RandomColor = new Random();
private Color RandomNewColor()
    {
        Byte[] _byte = new Byte[3];
        RandomColor.NextBytes(_byte);

标准错误,您只需要调用随机构造函数一次。使其成为类的字段,而不是局部变量。
private Random RandomColor = new Random();
private Color RandomNewColor()
    {
        Byte[] _byte = new Byte[3];
        RandomColor.NextBytes(_byte);