我正在尝试在绘图事件中使用它的图形对象在 Winforms 面板上绘制多条线。我实际上正在绘制许多连接给定点的线。所以,首先我做了这个,
private void panel1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawLines(new Pen(new SolidBrush(Color.Crimson), 3), PointFs.ToArray());
float width = 10;
float height = 10;
var circleBrush = new SolidBrush(Color.Crimson);
foreach (var point in PointFs)
{
float rectangleX = point.X - width / 2;
float rectangleY = point.Y - height / 2;
var r = new RectangleF(rectangleX, rectangleY, width, height);
e.Graphics.FillEllipse(circleBrush, r);
}
}
这会产生如下图所示的结果,
如您所见,在急转弯处绘制的线条有一点延伸,这是意料之中的。所以,我将绘制线代码更改为,
var pen = new Pen(new SolidBrush(Color.Crimson), 3);
for (int i = 1; i < PointFs.Count; i++)
{
e.Graphics.DrawLine(pen, PointFs[i - 1], PointFs[i]);
}
现在绘图工作正常。
谁能说出这两种方法之间的区别?