Winforms 如何在WinForm应用程序中的正确位置绘制矩形

Winforms 如何在WinForm应用程序中的正确位置绘制矩形,winforms,drawing,Winforms,Drawing,我有一个WinForm应用程序,它在一个PictureBox中显示了一个图像,它还增加了允许用户通过单击和拖动在图像上绘制一个矩形的功能。 矩形的位置、高度和宽度保存到磁盘 当再次查看图像时,我想在图像的相同位置自动重新绘制该矩形 但是,当我重新绘制它时,高度和宽度都很好,但位置始终处于关闭状态 正在MouseDown事件中捕获该位置,如下所示 private void pbSample_MouseDown(object Sender, MouseEventArgs e) {

我有一个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);
    }

给定在MouseDown事件中捕获的MouseEventArgs的位置,如何计算重新绘制矩形的正确位置?

您捕获的鼠标单击点可能与窗体相关,而不是与图片框相关。您要么需要确保正确捕获坐标,要么将坐标偏移

你能举个截图作为例子吗