我有一个名为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窗体。
答案 0 :(得分:13)
处理小组的Paint event并将其放入其中。发生的事情是它在构造函数中被绘制一次,但每次被调用时都会在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);
}
}
答案 1 :(得分:2)
在创建表单并在屏幕上显示之后将其置于某些事件中,它应该可以正常工作。
最好将它放在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));
}
}
答案 2 :(得分:0)
要查看您的绘图 - 您只需创建一个带有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)(用于绘制)。
答案 3 :(得分:0)
如果您按照其他答案仍然没有显示您的绘图,请尝试从正在绘制的控件中删除所有控件。其他控件可能涵盖您想要绘制的任何内容。
答案 4 :(得分:0)
private void button2_Click(object sender, EventArgs e)
{
panel1.Paint += new PaintEventHandler(
(object sender1, PaintEventArgs e1) => {
var p = new Pen(Color.Black, 3);
var point1 = new Point(234, 118);
var point2 = new Point(293, 228);
e1.Graphics.DrawLine(p, point1, point2);
}
);
panel1.Invalidate();
}