我需要在动态创建的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;
答案 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);
};