在加载到图片框中的图像上绘图

时间:2011-08-09 18:29:56

标签: c# drawing overlay picturebox

我已将汽车的图像加载到图片框中。

   private void btn_LoadPattern_Click(object sender, EventArgs e)
    {
        OpenFileDialog openFileDialog = new OpenFileDialog();
        openFileDialog.Filter = "JPEG Files|*.jpg";

        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            pictureBox1.ImageLocation = openFileDialog.FileName;
        }
    }

我想在此图像上绘制一个矩形,并在同一表格上添加箭头按钮,这样用户就可以移动矩形以指示图片在登记牌所在的位置。

问题在于,如果我开始绘制矩形,它将被汽车图片覆盖。另一个问题是当用户clieck向右/向左/向上/向下按钮移动时,如何在新位置重绘矩形。

Anyhelp将不胜感激。

1 个答案:

答案 0 :(得分:2)

在这种情况下,我不会使用PictureLocation,我会这样做:

pictureBox1.BackgroundImage = Image.FromFile(openFileDialog.FileName);

现在,如果你在PictureBox中绘制一个矩形,它应该被绘制在汽车图像上。

其次,使用Paint的{​​{1}}事件 这样的事情应该可以解决问题。

PictureBox

您应该能够根据箭头键处理按键修改Rectangle MyRectangle; private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { // Create a local version of the graphics object for the PictureBox. Graphics g = e.Graphics; g.DrawRectangle(Pens.Black, MyRectangle); } ,然后调用MyRectanglepictureBox1.Invalidate()事件重新绘制新位置的矩形。