【问题标题】:Windows Phone 8 C# Random Ellipse generationWindows Phone 8 C# 随机椭圆生成
【发布时间】:2014-10-31 14:11:47
【问题描述】:

我是构建 Windows Phone 8/8.1 应用程序(第二个应用程序)的新手,我遇到了一个非常烦人的问题。

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

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

    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);
    }

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

【问题讨论】:

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


    【解决方案1】:

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

    此外,在对CreateDots 的调用之间保持Random 实例。如果您不这样做并且您快速连续拨打电话,您最终可能会得到两个连续的 Random 实例,它们的种子相同。

    Random 默认以当前时间为种子。

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

    【讨论】:

    • 啊该死的,我真的很愚蠢,因为我没有看到这一点。非常感谢,现在可以完美运行了:)
    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多