画线宽度与椭圆宽度
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
我正在编写绘图程序。
当用户画线时,我使用这段代码,它按预期工作。
_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