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

本文关键字:图像 绘图 加载 | 更新日期: 2023-09-27 18:05:15

我已经像这样将一辆汽车的图像加载到图片框中。

   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;
        }
    }

我想在这个图像上画一个矩形,并在同一个表单上添加箭头按钮,这样用户就可以移动矩形来指示在图片上注册板的位置。

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

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

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

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

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

其次,利用PictureBoxPaint事件。
像这样的东西应该能奏效。

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);
}

和你应该能够处理按键修改MyRectangle根据箭头键,然后调用pictureBox1.Invalidate()Paint事件在新的位置重新绘制矩形