画线宽度与椭圆宽度

DrawLine width vs. Ellipse width

我正在编写绘图程序。

当用户画线时,我使用这段代码,它按预期工作。

_Pen = New Drawing.Pen(_Color, _sngThickness)
_Pen.StartCap = Drawing2D.LineCap.Round
_Pen.EndCap = Drawing2D.LineCap.Round

Using g As Graphics = Graphics.FromImage(_bmp)
    modControls.GraphicsSetSmoothingMode(g)
    g.DrawLine(_Pen, _Last.LastX, _Last.LastY, X, Y)
End Using

但是,当用户绘制一个点而不是一条线时,DrawLine 不起作用。 因此我正在使用 DrawEllipse。

然而,绘制的椭圆的宽度/高度似乎无法预测,我就是无法计算出正确的公式。 单点宽度/高度看起来是线宽的80%。

这就是我正在使用的

Using g As Graphics = Graphics.FromImage(_bmp)
    modControls.GraphicsSetSmoothingMode(g)
    Dim nRect As New Rectangle(X - (_sngThickness / 8), Y - (_sngThickness / 8), _sngThickness / 4, _sngThickness / 4)
    g.DrawEllipse(_Pen, nRect)
End Using

有没有人觉得我做错了什么?

此外,我的椭圆没有填充,但我想这是另一个问题。

根据我的评论,尝试改用画笔而不是钢笔并改用 FillEllipse 方法:

Using g As Graphics = Graphics.FromImage(_bmp)
  modControls.GraphicsSetSmoothingMode(g)
  Dim nRect As New Rectangle(X - (_sngThickness / 2), Y - (_sngThickness / 2),
                             _sngThickness, _sngThickness)
  g.FillEllipse(_Brush, nRect)
End Using