DrawLine宽度与椭圆宽度

时间:2017-08-15 18:36:42

标签: .net vb.net drawing system.drawing

我正在编写一个绘画程序。

当用户绘制一条线时,我使用此代码,它按预期工作。

_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

有人看起来我做错了吗?

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

1 个答案:

答案 0 :(得分:1)

根据我的评论,尝试切换到画笔而不是笔,而是使用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