Как нарисовать прямоугольник в приложении WinForm в правильном месте - PullRequest
0 голосов
/ 25 марта 2010

У меня есть приложение WinForm, у которого есть изображение, отображаемое в PictureBox, с дополнительной функциональностью, позволяющей пользователю рисовать прямоугольник на изображении, щелкая и перетаскивая. Расположение, высота и ширина прямоугольника сохраняются на диск.

При повторном просмотре изображения я хочу автоматически перерисовать этот прямоугольник в той же позиции на изображении.

Однако, когда я перерисовываю его, высота и ширина в порядке, но местоположение всегда отключено.

Местоположение фиксируется в событии MouseDown, как это

private void pbSample_MouseDown(object Sender, MouseEventArgs e)
    {
        if (SelectMode)
          {
             StartLocation.X = e.X;
             StartLocation.Y = e.Y;
             //later on these are saved as the location of the rectangle
          }     

    }

И я перерисовываю это так

public void DrawSelectedArea(Rectangle rect)
    {
      Graphics g = this.pbSample.CreateGraphics();
      Pen p = new Pen(Brushes.Black);
      g.DrawRectangle(p, rect);
    }

Учитывая местоположение из MouseEventArgs, захваченное во время события MouseDown, как я могу вычислить правильное местоположение, чтобы перерисовать мой прямоугольник?

1 Ответ

0 голосов
/ 25 марта 2010

Точки щелчка мыши, которые вы захватываете, вероятно, относятся к форме, а не к графическому блоку. Вам либо нужно убедиться, что вы правильно захватываете координаты, либо сместить их.

Не могли бы вы включить скриншот в качестве примера?

...