我正在编写一个绘画程序。
当用户绘制一条线时,我使用此代码,它按预期工作。
_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
有人看起来我做错了吗?
另外,我的椭圆没有填充,但我猜这是另一个问题。
答案 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