私は Invalidate メソッドを理解していないと思います...マウスダウンでマウスの位置にある正方形の左上隅で正方形を描画しようとしています。次に、右下隅がマウスの現在の位置です. 以下は、MouseMove イベントでトリガーされるメソッドです。親は、pictureBox の子を持つパネルです。(私はこれらの上に描画しようとしています。)
問題は にあるようpictureBoxMain.Invalidate()
です。コメントアウトすると、コードは期待どおりに動作し、無数の正方形を描画します。
[グラフィックスg
は、pictureBox によって作成されるため、pictureBox で Invalidate メソッドを呼び出す理由。]
無効化行のコメントを外すと、マウスの移動に応じてボックスが描画されますが、移動が停止するとすぐにボックスが消えます。私はなぜ私の人生のために運動することはできません. コードをデバッグしようとすると、マウスが動いていないときに MouseMove メソッドが呼び出されているように見えますが、これは意味がありません。
どんな助けでも大歓迎です!
private void pictureBoxMain_MouseMove(object sender, MouseEventArgs e)
{
if (MouseDrawLeft)
{
//Move
}
else if (MouseDrawRight)
{
MouseLast = e.Location;
if (MouseFirst != MouseLast)
{
pictureBoxMain.Invalidate();
Point bl = new Point(MouseFirst.X, MouseLast.Y);
Point tr = new Point(MouseLast.X, MouseFirst.Y);
g.DrawLine(pen, MouseFirst, tr);
g.DrawLine(pen, MouseFirst, bl);
g.DrawLine(pen, bl, MouseLast);
g.DrawLine(pen, tr, MouseLast);
}
}
}