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

时间:2010-03-25 15:42:07

标签: winforms drawing

我有一个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的位置,我如何计算重绘矩形的正确位置?

1 个答案:

答案 0 :(得分:0)

您捕获的鼠标点击点可能是相对于表单而不是图片框。您需要确保正确捕获坐标或抵消它们。

您可以将屏幕截图作为示例吗?