0

我目前正在尝试使用 Graphics 类在 C# 中绘制一些线条。

我的问题是,有时(主要是在调整表格大小时重新绘制)某些部分的线条丢失了。

这就是它的样子:

画线

这是我画线的代码:

Graphics g = pnlGraph.CreateGraphics();
g.Clear(pnlGraph.BackColor);
Point p1 = new Point((mainNode.Left + (mainNode.Width / 2)), (mainNode.Top + (mainNode.Height / 2)));
Point p2 = new Point((pic.Left + (pic.Width / 2)), (pic.Top + (pic.Height / 2)));
g.DrawLine(new Pen(new SolidBrush(Color.Black), 2), p1, p2);

这段代码从面板中间的 mainNode 到它周围的一些节点绘制了一些线。

我正在调用该函数来绘制线条:

加载、调整大小、可见状态已更改

我也在表单的Paint和面板中尝试过它不起作用。

有什么方法可以修复它或以其他方式绘制这些线条吗?

感谢您的任何回答!

4

1 回答 1

1

由于@HansPassant 的回答也产生了一些问题,我们以另一种方式解决了问题:

我们创建了一个图像并用面板大小的矩形填充它。之后我们在图像中绘制线条并在面板上绘制图像。

Graphics g = pnlGraph.CreateGraphics();
Image img = new Bitmap(pnlGraph.Width, pnlGraph.Height);
Graphics gi = Graphics.FromImage(img);
gi.DrawRectangle(new Pen(new SolidBrush(pnlGraph.BackColor)), new Rectangle(0, 0, pnlGraph.Width, pnlGraph.Height));
// For every line:
gi.DrawLine(new Pen(new SolidBrush(Color.Black), 2), p1, p2);
// At the end:
g.DrawImage(img, 0, 0, img.Width, img.Height);
于 2013-09-09T09:46:16.063 回答