我是构建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);
}
现在有人如何在屏幕上的任何地方生成椭圆,而不仅仅是在黑线上? 提前感谢您的帮助。
答案 0 :(得分:3)
不要创建两个Random
个实例。创建一个实例,然后重复使用它。
此外,在Random
的调用之间保留CreateDots
实例。如果您没有快速连续拨打电话,最终可能会有两个连续Random
个种子播种。
Random
以当前时间播种。
您的省略号都倾向于位于Left
和Top
具有相同值的行上,因为两个Random
实例是快速连续创建的,并且几乎总是以相同的电流播种时间。然后,当您生成LeftPos
和TopPos
时,对Next
的两次调用都从相同的状态开始。