WPF forme Personnalisée
J'ai besoin de créer une forme personnalisée à ajouter sur un formulaire WPF. La forme d'un triangle. Si vous vous demandez, oui, je peux le faire avec un Polygone dans le code XAML:
<Polygon Fill="LightBlue" Stroke="Black" Name="Triangle">
<Polygon.Points>
<Point X="0" Y="0"></Point>
<Point X="10" Y="0"></Point>
<Point X="5" Y="-10"></Point>
</Polygon.Points>
</Polygon>
Le problème est que nous avons besoin de lier une propriété de quelque chose qui détermine en fin de compte la taille de la forme. Alors, j'ai écrit une simple extension de la forme de la classe comme ceci:
public class Triangle:Shape
{
private double size;
public static readonly DependencyProperty SizeProperty = DependencyProperty.Register("Size", typeof(Double), typeof(Triangle));
public Triangle() {
}
public double Size
{
get { return size; }
set { size = value; }
}
protected override Geometry DefiningGeometry
{
get {
Point p1 = new Point(0.0d,0.0d);
Point p2 = new Point(this.Size, 0.0d);
Point p3 = new Point(this.Size / 2, -this.Size);
List<PathSegment> segments = new List<PathSegment>(3);
segments.Add(new LineSegment(p1,true));
segments.Add(new LineSegment(p2, true));
segments.Add(new LineSegment(p3, true));
List<PathFigure> figures = new List<PathFigure>(1);
PathFigure pf = new PathFigure(p1, segments, true);
figures.Add(pf);
Geometry g = new PathGeometry(figures, FillRule.EvenOdd, null);
return g;
}
}
}
Je pensais que c'était bon, mais la forme ne pas montrer n'importe où sur le formulaire. Donc, je ne suis pas sûr si le DefiningGeometry méthode est bien écrit. Et si je ne vois rien de très probablement ne l'est pas.
Merci!
OriginalL'auteur Luis Garcia | 2012-09-11
Vous devez vous connecter pour publier un commentaire.
La propriété de dépendance n'est pas configuré correctement. Écrire le
Taille
getter/setter comme ceci:Vous pouvez également utiliser votre XAML et de se lier à la
RenderTransform
propriété de laPolygon
, éliminant le besoin d'un type personnalisé.OriginalL'auteur McGarnagle