フォームには、画像ボックス(picturebox1)とタイマーコントロール(timer1)が含まれています。
基本的に、起動時に、ピクセルクラスの5つのインスタンスを含むリストコレクションを作成します。タイマーがトリガーされると、ペイントイベントを呼び出すピクチャーボックスの更新を呼び出します。ペイントイベントでは、リストコレクションを繰り返し処理し、各ピクセルの描画メソッドを呼び出します。
私が抱えている問題は、1つのピクセルしか表示されないことです...つまり、ピクセルを追加するポイントでブレークを設定しない限り、続行して再度ブレークし、すべてのptheピクセルが作成されるまで繰り返します。その後、何らかの理由ですべてのピクセルが表示されます...
なぜ私が1つのピクセルしか見ることができないのか誰かに教えてもらえますか?
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);
}
}
私の元のコードはもっと多くのことをします..しかし、私はそれをすべて取り除き、同じ結果を得ました。