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

翻译 2016年08月30日 15:29:45

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

效果图:





UIElement重写OnRender方法重绘控件的外观

public partial class MainWindow : Window { public MainWindow() { Ini...
  • rrzhaobaojun
  • rrzhaobaojun
  • 2013年12月25日 14:38
  • 1903

Android自定义view,ShapeView,多边形

童鞋们,你还在为绘制常用的多边形而烦恼吗?不用怕,小福利,有需要的尽管拿去!ShapeView,支持圆、三角形、正方形、五边形、五角星、六边形。 效果图:代码 attr.xml ...
  • jshch2009
  • jshch2009
  • 2017年03月27日 17:59
  • 592

自定义控件shape详解

[TOC] android开发中需要使用自定义资源文件,shape文件可以做成任意形状经常用作背景色。 在AS中可以在drawable文件下右键新建resource file 然后在文件内将标题改...
  • qq_34767498
  • qq_34767498
  • 2016年07月01日 17:56
  • 565

使用shape自定义button状态

先看效果图 正常状态 按下状态
  • Small_Lee
  • Small_Lee
  • 2016年04月27日 11:06
  • 732

自定义带阴影的shape

翻译:Shadow effect with custom shapes使用自定义Shape很容易就能给视图增加一个阴影。 方法是首先生成一个背景阴影层,然后内容层放在上面。 但是你还需要按顺序显示...
  • lihenair
  • lihenair
  • 2015年11月30日 13:38
  • 2607

Android代码实现Shape,自定义TextView

我的上一篇博客代码实现shape(GradientDrawable详解)在上一篇博客中已经实现了自定义GradientDrawable,但是 setBackground(Drawable);该方法只有...
  • yangyahuiguo
  • yangyahuiguo
  • 2016年08月17日 14:06
  • 1672

java创建Shape类,求子类circle,圆形rectangle矩形,rhombus菱形的周长和面积

测试类:主要实现创建新对象,并初始化,然后输出结果。 package lesson2; public class Demo1 { public static void main(...
  • konghou888
  • konghou888
  • 2014年07月22日 12:52
  • 2548

Android shape drawable XML 可绘制图形的创建与使用

Android drawable XML 可绘制图形的创建与使用。通过XML配置一个规则图形应用到布局文件或代码中,可以随时调整大小颜色等各种配置,灵活方便,占用存储小。...
  • xietansheng
  • xietansheng
  • 2017年01月18日 23:01
  • 2616

Shape 自定义控件的形状

一  基础知识    (1) 操作步骤         ①  新建shape文件               首先在res/drawable文件夹下,新建一个文件,命名为:shape_radi...
  • qq_33166080
  • qq_33166080
  • 2016年11月07日 17:37
  • 753

android中shape的使用介绍-2环形

在上一篇文章 android中shape的使用介绍-1 中,主要介绍shape的常用属性,那么,这篇文章就给出环形具体的代码示例:1 环形(1)环形效果1 ...
  • north1989
  • north1989
  • 2016年10月26日 23:49
  • 2037
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:#239 – 重写Shape类创建自定义图形(Creating a Custom Shape by Overriding the Shape Class)
举报原因:
原因补充:

(最多只允许输入30个字)