2016-01-28 53 views
1

我正在嘗試使用GraphicsPath繪製「文件夾」,如圖像。GraphicsPath AddLine創建意外路徑

我的函數來創建的路徑是:

Public Function FolderRect(ByRef r As Rectangle) As System.Drawing.Drawing2D.GraphicsPath 

    Dim p As New System.Drawing.Drawing2D.GraphicsPath 

    Dim iTabWidth As Integer = 30 
    Dim iTabHeight As Integer = 12 

    With p 
     Call p.AddLine(r.Left, r.Top, r.Left + iTabWidth, r.Top) 
     Call p.AddLine(r.Left + iTabWidth, r.Top, r.Left + iTabWidth, r.Top + iTabHeight) 
     Call p.AddLine(r.Left + iTabWidth, r.Top + iTabHeight, r.Right, r.Top + iTabHeight) 
     Call p.AddLine(r.Right, r.Top + iTabHeight, r.Right, r.Bottom) 
     Call p.AddLine(r.Right, r.Bottom, r.Left, r.Bottom) 
     Call p.AddLine(r.Left, r.Bottom, r.Left, r.Top) 

     Call p.CloseFigure() 
    End With 

    Return p 

End Function 

代碼看起來我的權利,但結果不是我所期待的:

enter image description here

(我創建的使用圖像編輯器的「正確」版本)。

這可能是GraphicsPath中的一個錯誤嗎?

這是PathPoints樣子: enter image description here

這是 「R」 的模樣: enter image description here

+0

我誤讀了。我以爲你是在傾斜/斜面的外觀之後。如果我使用你的代碼,我會得到方形標籤。我看不出這將如何創造斜角 – Plutonix

+2

不要修復它,看起來不錯。 –

+0

嘗試通過繪製最後一行而不是p.CloseFigure()它可能不會按照您期望的方式關閉它。 –

回答

0

圖形路徑幾乎可以肯定是正確的。您可以通過查看圖形路徑的PathPoints屬性來驗證這一點。

繪製圖形路徑時可能會出現一些舍入誤差。嘗試使路徑與目標位圖的大小相同。

+0

我無法使路徑與目標位圖的大小相同。我添加了PathPoints的屏幕截圖。你認爲這可能是正確的嗎? –

+0

您顯示的路徑點沒有斜線。您可能會將tabwidth更改爲更大或更小,以查看是否可以改進。 – xpda

+0

更改tabwidth並沒有改變任何東西。 –