在动态创建的图片框上绘制线条

时间:2015-02-09 21:39:17

标签: c# winforms drawing

我需要在动态创建的PictureBox中绘制一条线。发生的情况是图片框是在表单中创建和显示的,但缺少行。我的代码如下,任何想法?日Thnx

public void create_pb()
{
    PictureBox pb = new PictureBox();
    pb.Size = new Size(200, 200);
    pb.BorderStyle = BorderStyle.Fixed3D;
    pb.Location = new Point(0,0);
    panel1.Controls.Add(pb);
    g = pb.CreateGraphics();
    Pen p = new Pen(Color.Black, 2);

    g.DrawLine(p, 0, 0, 200, 200);           
}

g定义为public Graphics g;

1 个答案:

答案 0 :(得分:2)

不要使用CreateGraphics。您需要在Paint事件处理程序中使用e.Graphics从传递给您的事件参数中进行绘制。

否则,下次重新绘制图片框时(例如,当表单被移动,调整大小,被其他表单覆盖等)时,您的行将被删除。

示例:

pb.Paint += (sender, e) =>
{
    Pen p = new Pen(Color.Black, 2);
    e.Graphics.DrawLine(p, 0, 0, 200, 200);
};