2016-01-28 2 views
1

J'essaye de dessiner une image de type "dossier" en utilisant un GraphicsPath.GraphicsPath AddLine crée un chemin inattendu

Ma fonction pour créer le chemin est le suivant:

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 

Le code semble bon pour moi, mais le résultat est pas ce que je pensais:

enter image description here

(j'ai créé le version "correcte" en utilisant un éditeur d'image).

Cela peut-il être un bug dans le GraphicsPath?

C'est ce que les PathPoints ressemblent: enter image description here

C'est ce que "r" ressemble à: enter image description here

+0

J'ai mal lu. Je pensais que vous étiez après le regard incliné/biseauté. Si j'utilise votre code, j'obtiens des onglets carrés. Je ne vois pas comment cela va créer des biseaux – Plutonix

+2

Ne le répare pas, ça a l'air génial. –

+0

Essayez-le en dessinant les dernières lignes à la place de p.CloseFigure() il ne peut pas le fermer comme vous le souhaitez. –

Répondre

0

Le chemin graphique est presque certainement correct. Vous pouvez vérifier cela en regardant la propriété PathPoints du chemin graphique.

Il est possible qu'il y ait une erreur d'arrondi lorsque vous dessinez le chemin graphique. Essayez de rendre le chemin de la même taille que le bitmap cible.

+0

Je ne peux pas rendre le chemin de la même taille que le bitmap cible. J'ai ajouté une capture d'écran des PathPoints. Pensez-vous que cela pourrait être correct? –

+0

Les points de cheminement que vous montrez n'ont pas de ligne angulaire. Vous pouvez changer la largeur de tabulation pour qu'elle soit un peu plus grande ou plus petite afin de voir si cela améliore les choses. – xpda

+0

Changer la tabulation n'a rien changé. –