En utilisant System.Drawing.Graphics
trucs GDI .NET, j'ai une forme consting de deux tableaux de points. Ils sont les pixels rouges et verts dans l'image ci-dessous. Maintenant, j'essaye de remplir l'intérieur de cette forme avec une couleur. Le dessiner comme de simples lignes fonctionne très bien. Comme ceci:Comment remplir un GraphicsPath avec des courbes qui se chevauchent?
g.DrawCurve(Pens.Red, points1);
g.DrawCurve(Pens.Green, points2);
Cela donne l'image de gauche (1).
alt text http://lisa.xms.se/wic/filled.png
Pour remplir cette chose, j'ai essayé d'utiliser un GraphicsPath
comme ceci:
GraphicsPath gp = new GraphicsPath();
gp.AddCurve(points1);
gp.AddCurve(points2);
g.FillPath(Brushes.Blue, gp);
Il fonctionne ... sorta. Le problème est lorsque la forme se chevauche comme vous pouvez le voir dans l'image du milieu (2) et ne remplira pas la partie qui se chevauche.
J'ai essayé d'utiliser gp.widen()
pour obtenir le contour, puis remplir après:
gp.Widen(new Pen(Color.Blue, 3));
g.FillPath(Brushes.Blue, gp);
Cela devrait fonctionner, mais il semble que pour remplir la tranche 3 pixels extérieur la forme et non la chose entière , comme on le voit sur l'image (3).
Des idées pour résoudre ce problème?
Pouvez-vous ajouter l'initialisation de points1 et points2? –