pictureBox の onPaint イベント ハンドラで問題が発生しています。コードを簡略化したので、今これを達成しようとしています: パスからビットマップを pictureBox1 にロードし、pictureBox1 の上を移動するときにマウス カーソルの周りに小さな四角形を描画します。
private int mouseX;
private int mouseY;
private String path;
public Form1()
{
InitializeComponent();
path = "images\\image.jpg";
}
private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Image = new Bitmap(path);
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
mouseX = e.X;
mouseY = e.Y;
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawRectangle(Pens.Black, mouseX - 10, mouseY - 10, 20, 20);
pictureBox1.Invalidate();
}
アプリケーションを実行すると、ビットマップが正常に読み込まれ、マウスをドラッグした場所に四角形が適切に描画されます。とにかく、次の 2 つの問題があります。
1)フォームが読み込まれると、ウィンドウをどこかに移動するまで、すべてが白ですが、pictureBox です。これは、menuStrip、toolStrip などを白色でクリアすることを意味します。pictureBox.Invalidate(); を追加すると Form1_Load にその問題を処理しているように見えます (すべてが読み込まれて表示されます) が、toolStrip には、相互作用しているいくつかのボタンとコンボ ボックスがあり、その可視性を変更しているため、依然として問題が発生します。pictureBox のみの Paint の機能を減らしたいと思います。
2) マウス カーソルが pictureBox に入らなかったにもかかわらず、フォームが読み込まれた瞬間に四角形が描画されます。また、カーソルが pictureBox を離れると、最後に描画された長方形がそこに残ります。削除しようとしましたが、わかりませんでした。
提案をありがとう、何か基本的なものがそこに欠けているように思えますが、何がわかりません。