该窗体包含一个图片框(picturebox1)和一个定时器控件(timer1)...
基本上在启动时,我创建了一个包含 5 个像素类实例的列表集合。当计时器触发时,我调用调用绘制事件的图片框的刷新。在绘制事件中,我遍历列表集合并调用每个像素的绘制方法。
我遇到的问题是只有一个像素出现......也就是说.. 除非我在添加像素的点设置中断,继续,然后再次中断并重复,直到创建所有 pthe 像素。然后由于某种原因,所有的像素都出现了......
谁能告诉我为什么我只能看到一个像素?
public partial class Form1 : Form
{
List<Pixel> pixels = new List<Pixel>();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
for (int ii = 0; ii < 5; ii++)
pixels.Add(new Pixel(pictureBox1)); // <- breakpoint here...?
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
foreach (Pixel p in pixels)
p.Draw(e, pictureBox1);
}
private void timer1_Tick(object sender, EventArgs e)
{
pictureBox1.Refresh();
}
}
public class Pixel
{
Random r = new Random(DateTime.Now.Millisecond);
public Point Position { get; set; }
public Pixel(PictureBox src)
{
Position = new Point(r.Next(0, src.Width), r.Next(0, src.Height));
}
public void Draw(PaintEventArgs e, PictureBox src)
{
e.Graphics.DrawRectangle(new Pen(Color.Black), Position.X, Position.Y, 1, 1);
}
}
我的原始代码做得更多......但我把它全部去掉并得到了相同的结果。