Windows Phone 8 C#随机椭圆生成

时间:2014-10-31 14:11:47

标签: c# windows windows-phone-8 windows-phone-8.1

我是构建Windows Phone 8 / 8.1应用程序(第二个应用程序)的新手,我有一个非常讨厌的问题。

我想尝试做什么,我想在我的画布上随机生成一个椭圆。但是当我生成椭圆时,我发现椭圆总是生成在黑线上的某个位置,如下图所示:

enter image description here

我用来生成椭圆的代码是:

    private void CreateDots()
    {

        Random Top = new Random();
        Random Left = new Random();

        int TopPos = Top.Next(0, 390); // screen height
        int LeftPos = Left.Next(0, 800); // screen width

        Ellipse Dot =new Ellipse();
        Dot.Name = "Dot";
        Dot.Fill = new SolidColorBrush(Color.FromArgb(255, 0,0,0));
        Dot.Width = 50;
        Dot.Height = 50;

        Canvas.SetTop(Dot, TopPos);
        Canvas.SetLeft(Dot, LeftPos);

        Canvas.Children.Add(Dot);
    }

现在有人如何在屏幕上的任何地方生成椭圆,而不仅仅是在黑线上? 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

不要创建两个Random个实例。创建一个实例,然后重复使用它。

此外,在Random的调用之间保留CreateDots实例。如果您没有快速连续拨打电话,最终可能会有两个连续Random个种子播种。

默认情况下,

Random以当前时间播种。

您的省略号都倾向于位于LeftTop具有相同值的行上,因为两个Random实例是快速连续创建的,并且几乎总是以相同的电流播种时间。然后,当您生成LeftPosTopPos时,对Next的两次调用都从相同的状态开始。