パネル内にピクチャボックスを持つ単純なツールを開発するために C# を使用しています。パネルにはプロパティ Autoscroll = true があります。そのピクチャーボックスの画像がパネルよりも大きい場合、パネルにはスクロールバーがあります
ピクチャボックスのペイントイベントで四角形を描くことができました。しかし、スクロールすると、この長方形が消えます。スクロールバーを移動した後に再描画する必要があることはわかっていますが、再度復元する方法がわかりません。
x、y、幅、高さ、ズームはグローバル変数であり、クリックしてツリーノードを使用すると、データが表示されます。
private void pictureBoxView_Paint(object sender, PaintEventArgs e)
{
if (choose == true)
{
Size newSize = new Size((int)(pictureBoxView.Image.Width * zoom),
(int)(pictureBoxView.Image.Height * zoom));
Graphics graphic = pictureBoxView.CreateGraphics();
Pen pen = new Pen(Color.Red, 3);
graphic.DrawRectangle(pen, x, y, width, height);
pen.Dispose();
}
}
private void treeViewTemplate_AfterSelect(object sender, TreeViewEventArgs e)
{
// refresh picturebox
pictureBoxView.Refresh();
// allow repaint
choose = true;
string[] value = treeViewTemplate.SelectedNode.Tag.ToString().Split(',');
x = Int32.Parse(value[0]);
y = Int32.Parse(value[1]);
width = Int32.Parse(value[2]);
height = Int32.Parse(value[3]);
zoom = Double.Parse(value[4]);
//MessageBox.Show("x = " + y + ", y = " + y + ", width = " + width + ", height = " + height + ", zoom = " + zoom);
// This call draw a rectangle again when I choose a value from TreeNode's Tag
pictureBoxView_Paint(this, null);
}