Bitmap bp = new Bitmap(400, 400);
Graphics g = Graphics.FromImage(bp);
g.Clear(Color.White);
for (int i = 0; i < 25; i++)
{
Random r = new Random();
int r1 = r.Next(bp.Width);
int r2 = r.Next(bp.Width);
int h1 = r.Next(bp.Height);
int h2 = r.Next(bp.Height);
Pen p = new Pen(Color.Silver);
g.DrawLine(p, r1, h1, r2, h2);
}
pictureBox1.Image = (Image)bp;
循环只执行了一次,断点时 或在循环中加入Thread.Sleep(10)方法可完全执行
Randon()
是用当前时间初始化的,不加Sleep()
,25个循环用一样的时间进行初始化,所以算出来的“随机数”也是一样的。
你把Random r = new Random();
语句移到循环之前就可以了。
这个和Random没关系,random每次实例化的时候都是一个新的 ,这样数字是不一样的,1#可以试试,而且我说了,我断点试过,是可以画出25条不同线段的
另,我测试过DrowLine 执行时间不草果1微秒,所以应该不存在方法执行时间问题
static void Main(string[] args)
{
for (int i = 0; i < 25; i++)
{
Random r = new Random();
int r1 = r.Next(400);
int r2 = r.Next(400);
int h1 = r.Next(400);
int h2 = r.Next(400);
Console.WriteLine("{0:d2}: {1} {2} {3} {4}",i, r1, r2, h1, h2);
}
Console.ReadLine();
}
实测可证,25个结果一模一样。