在面板上加载图像

时间:2011-11-29 15:24:08

标签: c# winforms

首先我在图片框中加载图片。然后我测量其中的区域并创建一个新图片。现在我想在面板中加载图像并通过鼠标绘制一条线。 我加入了我的表格:

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

但是在运行项目时没有出现任何内容。

2 个答案:

答案 0 :(得分:2)

您应该将代码放在面板Paint事件中。

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

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

答案 1 :(得分:1)

尝试将其更改为:

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