在面板上加载图像

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

首先,我在图片框中加载了一张图片。然后我测量它的面积,并创建一个新的图片。现在我想在面板中加载图像并通过鼠标绘制一条线。我在表单中添加了:

private Image imag;

我还添加到我的项目:

private void drawP_Paint(object sender, PaintEventArgs e)
{
    Graphics g = drawP.CreateGraphics(); 
    g.DrawImage(imag, new Point(0,0));
}

我在函数中设置了图像:

imag = (Image)bm;     
// or
imag = picturebox1.Image; // the made picture   
drawP.Invalidate();

但是运行项目时什么也没有出现

在面板上加载图像

你应该把你的代码放在面板Paint事件

    private void panel1_Paint(object sender, PaintEventArgs e)
    {
        Image imag = Image.FromFile(filename);
        e.Graphics.DrawImage(imag, new Point(0,0)); 
    }

这可以确保每次面板被重新绘制(在任何原因无效之后)您的图像是可见的。

试着这样修改:

private void drawP_Paint(object sender, PaintEventArgs e)
{
    e.Graphics.DrawImage(imag, new Point(0,0));
}

另外,从你的评论中,听起来你可能没有把事件连接起来。例子:

public Form1()
{
  InitializeComponent();
  drawP.Paint += drawP_Paint;
}

在图像上画一条线:

private void button1_Click(object sender, EventArgs e) {
  using (Graphics g = Graphics.FromImage(imag)) {
    g.DrawLine(Pens.Red, new Point(0, 0), new Point(32, 32));
  }
  drawP.Invalidate();
}