Rempli les Arcs en WPF
Je suis en train de dessiner une figure quelque chose comme ceci:
J'ai besoin d'avoir un élément unique pour chaque segment d'arc que je peux gérer les événements sur et recolorer que j'en ai besoin. Je suis un peu incertain sur la façon de créer des géométries en WPF. Je peux facilement calculer les quatre points pour chaque segment d'arc du rayon des cercles et l'angle du centre. À l'aide d'un rayon de 100 pour le cercle extérieur et 50 pour l'intérieur, les quatre points en rouge sont (dans le sens horaire à partir du haut à gauche avec origine au sommet du cercle):
0,0
70,30
35,65
0,50
L'aide de ces points j'ai créer un chemin simple pour dessiner le segment:
<Path Stroke="Black" Fill="Black" StrokeThickness="1" >
<Path.Data>
<PathGeometry>
<PathGeometry.Figures>
<PathFigure StartPoint="0,0">
<PathFigure.Segments>
<ArcSegment Point="70,30" />
<LineSegment Point="35,65" />
<ArcSegment Point="0,50" />
</PathFigure.Segments>
</PathFigure>
</PathGeometry.Figures>
</PathGeometry>
</Path.Data>
</Path>
Mais qui attire tout un trapèze avec des lignes droites. Je sais que je peux modifier la Taille sur le ArcSegments, mais je n'arrive pas à comprendre comment cela affecte la courbure. Je veux que les arcs de suivre le cercle principal, mais je ne suis pas sûr de savoir comment exprimer cela. Comment puis-je faire les arcs ont le droit de courbure?
Aussi, comment puis-je exprimer et d'ajouter les chemins d'accès dans le code c# derrière,plutôt que dans le code xaml?
C'est pour un jeu de plateau, je travaille sur.
Size
est utilisé comme Size="XX,YY"
où XX
est le rayon x et YY
est le y-rayon de l'arc. Pour un parfait arc de cercle, vous voulez ceux à être égaux. En passant par les tailles que vous a donné, il doit être 50,50
pour l'intérieur de votre arc et 100,100
pour l'extérieur.OriginalL'auteur captncraig | 2011-05-23
Vous devez vous connecter pour publier un commentaire.
J'ai dessiné exactement ce genre de forme (deux coaxiales les arcs et les deux rayons se joindre à eux) comme ceci:
Bien entendu, mais plutôt à un code XAML, mais il peut vous donner un coup de fouet.
vous pouvez poster la mise à jour de XAML pour que les autres puissent voir votre solution?
Fait, j'ai fini de codification dans le code-behind, si je me souviens bien. Qui fait plus de sens pour mon cas d'utilisation particulier.
Cela a très bien fonctionné pour moi, mais j'ai eu à déplacer le premier segment de la ligne vers le bas, pour être ajouté en dernier à la
PathSegmentCollection
de sorte qu'il y aurait un accident vasculaire cérébral, donc je pourrais avoir ma forme avec un contour. Je ne sais pas pourquoi, mais ça a marché donc je suis bon.OriginalL'auteur Will Dean
Une autre option peut être de tirer dans l'expression de 2010 le dessin de l'espace de noms dans le code XAML. Il est facile ensuite.
EDIT: Cela va tirer "de Microsoft.De l'Expression.Dessin" ce qui est installé lors de l'installation de Mélange. Si l'ordinateur client n'a pas cela, alors ce sera un échec. D'autre part, vous pouvez compresser et de les redistribuer la dll avec votre logiciel. Microsoft permet que.
OriginalL'auteur NotAgain