Я использую C# для разработки простого инструмента, в котором есть панель изображений внутри панели. Панель имеет свойство Autoscroll = true. Если изображение этого изображения больше, чем панель, на панели есть полосы прокруткиВосстановить рисунок после панели прокрутки
Я мог нарисовать прямоугольник на событии рисования изображения. Но когда я прокручиваю, этот прямоугольник исчезает. Я знаю, что нужно перерисовать его после перемещения полосы прокрутки, но я не знаю, как восстановить его снова.
x, y, width, heigth, zoom - глобальная переменная, и при использовании щелчка в treenode у него будут данные.
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);
}
Или просто как нарисовать прямоугольник на коробке с картинками, даже когда панель перекрашена? –