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

如果你需要一个任何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>

效果图:




阅读更多
文章标签: WPF Shape
个人分类: WPF
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭