WPF自定义形状 [英] WPF Custom shape
问题描述
我需要创建一个自定义形状,以一个WPF窗体上添加。形状仅仅是一个三角形。如果你想知道,是的,我能做到这一点与多边形的XAML这一点:
I need to create a custom shape to add on a WPF form. The shape is just a triangle. If you are wondering, yes, I can do that with a Polygon in XAML with this:
<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>
的问题是,我们需要从别的地方属性,最终决定了形状的大小结合。所以,我写形类的简单延伸是这样的:
The problem is that we need to bind a property from somewhere else that ultimately determines the size of the shape. So, I wrote a simple extension of the shape class like this:
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;
}
}
}
我想这是很好的,但形状不表单上的任何地方出现。所以,我不知道,如果DefiningGeometry方法写得很好。如果我看不到任何东西很可能是没有的。
谢谢!
I thought that was good but the shape does not show up anywhere on the form. So, I am not sure if the DefiningGeometry method is well written. And if I cannot see anything very likely is not. Thanks!
推荐答案
的依赖属性设置不正确。 写尺寸
的getter / setter这样:
The dependency property isn't set up correctly. Write the Size
getter/setter like this:
public double Size
{
get { return (double)this.GetValue(SizeProperty); }
set { this.SetValue(SizeProperty, value); }
}
这篇关于WPF自定义形状的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!