#239 – 重写Shape类创建自定义图形(Creating a Custom Shape by Overriding the Shape Class)

2016-08-30 19:13:00来源:CSDN作者:Libby1984人点击

如果你需要一个任何Shape类的子类都无法显示出来的特殊图形。你可以通过继承Shape类来创建自定义图形来实现。

你通过重写Shape的DefiningGeometry 属性来定义自定义图形的形状。在属性的get方法,创建一个Geometry类实例并返回。在下面的例子中,我们创建一个Geometry 实例,并用StreamGeometryContext 将它绘制出来。

public class MyWeirdShape : Shape{    protected override Geometry DefiningGeometry    {        get { return GenerateMyWeirdGeometry(); }    }     private Geometry GenerateMyWeirdGeometry()    {        StreamGeometry geom = new StreamGeometry();        using (StreamGeometryContext gc = geom.Open())        {            // isFilled = false, isClosed = true            gc.BeginFigure(new Point(50.0, 50.0), false, true);            gc.ArcTo(new Point(75.0, 75.0), new Size(10.0, 20.0), 0.0, false, SweepDirection.Clockwise, true, true);            gc.ArcTo(new Point(100.0, 100.0), new Size(10.0, 20.0), 0.0, false, SweepDirection.Clockwise, true, true);        }         return geom;    }}

在XAML中使用:

<StackPanel>    <local:MyWeirdShape Height="150" Width="150" Stroke="Black" StrokeThickness="2"/></StackPanel>

效果图:





最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台