我目前正在尝试使用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到其周围的某些节点绘制一些线条。
我正在调用函数来绘制线条:
负载, 调整, 可见状态发生了变化
我也在表格的油漆和不起作用的面板上尝试过。
有没有办法解决这个问题?或者用其他方式画这些线?
感谢您的回答!
答案 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);