面板上的画线没有显示出来

我有一个名为panel1的Panel,我正在尝试使用以下代码在我的panel1上画一条线:

Graphics g = panel1.CreateGraphics(); var p = new Pen(Color.Black, 3); var point1 = new Point(234,118); var point2 = new Point(293,228); g.DrawLine(p, point1, point2); 

但没有任何东西出现。 有任何想法吗? 这是一个Windows窗体。

处理Panel的Paint事件并将其放入其中。 发生的事情是它在构造函数中被绘制一次,但每次被调用时都会在Paint事件中被绘制。

 private void panel1_Paint(object sender, PaintEventArgs e) { base.OnPaint(e); using(Graphics g = e.Graphics) { var p = new Pen(Color.Black, 3); var point1 = new Point(234,118); var point2 = new Point(293,228); g.DrawLine(p, point1, point2); } } 

在表单创建并在屏幕上显示后,将它放在某些事件中它应该可以正常工作。

最好将它放在Paint事件中,如keyboardP所述,但如果在屏幕上显示表单之前调用它将不会显示。

要测试它,您可以添加一个按钮并将代码添加到click事件:

 private void button1_Click(object sender, EventArgs e) { using (Graphics g = panel1.CreateGraphics()) { g.DrawLine(new Pen(Color.Back, 3), new Point(234,118), new Point(293,228)); } } 

要查看您的绘图 – 您只需创建一个带有Click事件的按钮,然后在单击按钮时绘制。 例如:

 private void btnDraw_Click(object sender, EventArgs e) { Graphics dc = drawingArea.CreateGraphics(); Pen BlackPen = new Pen(Color.Black, 2); dc.DrawLine(BlackPen, 0, 0, 200, 200); BlackPen.Dispose(); dc.Dispose(); } 

哦,顺便说一下“drawingArea”是你添加到表单中的PictureBox或Panel的(Name)(用于绘制)。

如果您按照其他答案仍然没有显示您的绘图,请尝试从正在绘制的控件中删除所有控件。 其他控件可能涵盖您想要绘制的任何内容。