C#中的绘制线有时会缺少部件

时间:2013-09-08 22:06:33

标签: c# .net graphics paint

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

我的问题是,有时候(主要是在重新调整表格时重新绘制)部分线条缺失。

这就是它的样子:

drawn lines

这是我绘制线条的代码:

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到其周围的某些节点绘制一些线条。

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

负载, 调整, 可见状态发生了变化

我也在表格的油漆和不起作用的面板上尝试过。

有没有办法解决这个问题?或者用其他方式画这些线?

感谢您的回答!

1 个答案:

答案 0 :(得分:1)

由于@HansPassant的答案也出现了一些问题,我们以另一种方式修复了问题:

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

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);