C#如何在Windows窗体上的两个对象之间绘制一条线?
问题描述:
我一直试图在两个对象之间画一条线很长一段时间,但它仍然无法工作。C#如何在Windows窗体上的两个对象之间绘制一条线?
我的程序应该创建两个图片框(已经制作,称为PB1和PB2),并将它们与表单上的一行连接起来。
我有这样的:
public void DrawStuff(object sender, PaintEventArgs e)
{
Pen blackPen = new Pen(Color.Black, 3);
Point point1 = new Point(PB[0].Location.X, PB[0].Location.Y);
Point point2 = new Point(PB[1].Location.X, PB[1].Location.Y);
e.Graphics.DrawLine(blackPen, point1, point2);
CreateGraphics();
}
但我不能调用函数!此外,Boxes正在创建一个按钮,所以它不能从一开始就绘制,它必须在按下该按钮之后进行。如果任何人有工作代码,请告诉我,我即将分手。
答
- 请勿(永远不要读取)明确呼叫
CreateGraphics()
。这是一种危害人类的罪行,除非是非常罕见的情况。 - 处理
Paint
事件(或覆盖OnPaint()
)您的Form
。在那里写你的画线代码。
事情是这样的:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
using(var blackPen = new Pen(Color.Black, 3))
e.Graphics.DrawLine(blackPen, PB[0].Location, PB[1].Location);
}
- 每当你需要手动刷新屏幕,通话
this.Invalidate()
。
这是绘制事件连线了吗?我猜不是,否则你会看到这些PictureBoxes上的空例外,如果他们还没有创建。改用OnPaint覆盖。在访问PB [0]和PB [1]之前,确保它们存在。你没有给我们如何创建这些盒子的代码。消除CreateGraphics();线 - 它没有为你做任何事情。 – LarsTech