2017-08-15 75 views
0

我正在編寫一個繪畫程序。畫線寬度與橢圓寬度

當用戶畫一條線時,我使用這段代碼,它按預期工作。

_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

'g.FillEllipse(...' – LarsTech

+0

@LarsTech已經解決了所有的奇怪的問題,你可以讓你的評論的答案? – tmighty

+0

我只評論了「這是另一個問題」,我不確定如何解決你的維度問題。 – LarsTech

回答

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 
+0

請使用/ 2而不是/ 8和/ 1而不是/ 4.這就是我的意思是」奇怪的問題「我只介紹/ 8因爲我們/ 2的ual方法不會導致正確的大小。 – tmighty