for (int i = 0; i < 25; i++) {
Random r = new Random(); // 每次迴圈新建實例
int r1 = r.Next(bp.Width);
// ...
}
new Random() **預設以當前時間 (Ticks) 為種子**,迴圈執行極快,**多次實例化在同一毫秒內**,種子相同 → 產生**完全相同的隨機數序列** → 25 條線重疊在同一位置,視覺上像只畫了一次。
Random r = new Random(); // 移到迴圈外,單一實例
for (int i = 0; i < 25; i++) {
int r1 = r.Next(bp.Width);
int r2 = r.Next(bp.Width);
int h1 = r.Next(bp.Height);
int h2 = r.Next(bp.Height);
using (Pen p = new Pen(Color.Silver)) { // using 確保釋放
g.DrawLine(p, r1, h1, r2, h2);
}
}
pictureBox1.Image = bp; // 迴圈結束後一次性指派,減少重繪
Thread.Sleep(10) 是**錯誤的延遲手段**,會阻塞 UI 執行緒導致介面卡頓。pictureBox1.DoubleBuffered = true; 或在 Bitmap 畫完後一次 Invalidate()。