原文 http://www.cnblogs.com/laoyang999/archive/2012/11/23/2783734.html

继承自Shap类的形状有:Rectangle、Ellipse、Polygon以及Polyline。这些类相对比较简单,还有一个继承自Shap类,并且功能最强大的类,即Path类。Path类可以包含任何简单形状、多组形状以及更复杂的要素,如曲线。

Path类提供了一个Data属性,该属性接受一个Geometry对像,Geometry是一个抽像类,不能直接创建。而需要使用如下的某个派生类创建。

  1. LineGeometry:线
  2. RectangleGeometry:矩形
  3. EllipseGeometry:椭圆
  4. GeometryGroup:图形组
  5. CombinedGeometry:合并图形
  6. PathGeometry :代表一个更加复杂的图形
  7. StreamGeometry :相当于PathGeometry的轻量级的类。该类可以节省内存,一旦创建就不能再修改。

 图形微语言

WPF创作人员为定义几何图形增加了一个更简明的替换语法,通过该语法可以用更少的标记表示详细的图形。这种语法通常称为图形微语言,也可以称为微路径语言。

通常的写法如下示例:

<path Data="M 0 0 L10 10"/>

微语言路径命令如下表:

名称 说明
M x,y      

 为几何图形创建一个新的PathFigure,并设置起点。该命令必须在其他命令使用之前,

也可以在绘制序列期间使用该命令移动坐标系统的原点(M代表Move)

 L x,y    创建一条到指定点的LineSegment
 H x  使用x值创建一条水平线
 V y  使用y值创建一条垂直线
 Z

 用于结束当前的PathFigure对象。并将IsClosed属性设置为Ture。如果不希望图形封闭,就

可以不用这个命令

上面还有一些命令没说明,等后续研究。下面,做一个关闭按钮的例子,其中用到微语言路径。

效果如下图

上图中一个是正常状态,另一个是鼠标放上去时的状态

代码如下:

<Button Width="15" Height="15" RenderTransformOrigin="-11,-5.9"
HorizontalAlignment="Left" Margin="100,213,0,0" VerticalAlignment="Top">
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="closeGD" Background="LightGray">
<Rectangle Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"
RadiusX="2" RadiusY="2" Stroke="Black" StrokeThickness="1">
</Rectangle>
<Rectangle Margin="3.5">
<Rectangle.Fill>
<VisualBrush>
<VisualBrush.Visual>
<Path x:Name="closePath" Stroke="Blue" StrokeThickness="2"
Data="M0 0L10 10 M10,0L0 10 "/>
</VisualBrush.Visual>
</VisualBrush>
</Rectangle.Fill>
</Rectangle>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="closePath"
Property="Stroke"
Value="Red"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="closeGD"
Property="Background" Value="White"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>

WPF 路径和几何图形的更多相关文章

  1. 【WPF学习】第四十三章 路径和几何图形

    前面四章介绍了继承自Shape的类,包括Rectangle.Ellipse.Polygon以及Polyline.但还有一个继承自Shape的类尚未介绍,而且该类是到现在为止功能最强大的形状类,即Pat ...

  2. WPF入门(三)->几何图形之不规则图形(PathGeometry) (2)

    原文:WPF入门(三)->几何图形之不规则图形(PathGeometry) (2) 上一节我们介绍了PathGeometry中LineSegment是点与点之间绘制的一条直线,那么我们这一节来看 ...

  3. WPF入门(三)->几何图形之不规则图形(PathGeometry)

    原文:WPF入门(三)->几何图形之不规则图形(PathGeometry) 前面我们给大家介绍了LineGeometry,EllipseGeometry,CombinedGeometry等一些规 ...

  4. WPF入门(三)->几何图形之矩形(RectangleGeometry)

    原文:WPF入门(三)->几何图形之矩形(RectangleGeometry) 我们可以使用RectangleGeometry来绘制一个矩形或者正方形 RectangleGeometry 类:描 ...

  5. WPF入门(三)->几何图形之椭圆形(EllipseGeometry)

    原文:WPF入门(三)->几何图形之椭圆形(EllipseGeometry) 我们可以使用EllipseGeometry 来绘制一个椭圆或者圆形的图形 EllipseGeometry类: 表示圆 ...

  6. WPF入门(三)->几何图形之线条(LineGeometry)

    原文:WPF入门(三)->几何图形之线条(LineGeometry) 前一章我们对wpf的xaml语言有了一定的了解,那么我们现在开始来学习如何使用wpf来画出几何图形. LineGeometr ...

  7. C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码

    原文:C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码 C#WPF 如何绘制几何图形? 怎么绘制坐标系?绘制sin曲线(正弦曲线)? 这离不开Path(Syst ...

  8. WPF动画应用-几何图形扩散动画

    原文:WPF动画应用-几何图形扩散动画 最终效果图: 本实例中用到了DoubleAnimation和Storyboard两个类. 如果想系统学习的话可以直接点击链接看官方文档. 源码: 首先,在页面上 ...

  9. WPF路径动画(动态逆向动画)

    WPF 中的Path.Data 不再多介绍,M开始坐标点 C弧度坐标点 L 直线坐标点 <Path x:Name="path0" Data="M 10,100 C ...

随机推荐

  1. openstack安装记录(一)环境准备

    参考文献: 官方文档 http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/index.html 最小实例: 控制节点: 1 处理器, 4 ...

  2. Linux系统下用C语言获取MAC地址

    最近在做一个小程序,需要用到在linux系统里编写C程序从而获取MAC地址,从网上搜了一遍,想总结一下.如果你就只需要单个功能的程序,可以采用方法一,见代码1,一般最好能够封装起来,写成获取MAC地址 ...

  3. 【原创】QT5-卸载精灵v1.0-卸载windows软件-简易版

    由于项目需求,需要实现卸载windows上的普通软件的小功能,实现起来还是比较简单的. 先发个图: 思路: 1.根据注册表的信息去打开应用程序,卸载也一样: 2.读桌面的快捷方式,根据快捷方式的指向路 ...

  4. MYSQL 查看可用的字符集的 2 方法

    方法 1. show character set; 方法 2. show collation;

  5. Seafile 推出 “分布式文件同步技术” 打造的私有云服务

    近两年来 Dropbox 等云储存服务迅速窜红,各大巨头纷纷推出自家的云储存服务(苹果的 iCloud, 微软的 SkyDrive, Google 即将推出的 GDrive),国内也有类似的服务(金山 ...

  6. 将文件放到Android模拟器的SD卡中的两种解决方法

    两种方式:一.窗口界面操作1.打开DDMS页面2.打开File Explorer页,如果没有,在Window --> Show View -->File Explorer3.一般就在mnt ...

  7. bzoj2015 [Usaco2010 Feb]Chocolate Giving

    Description Farmer John有B头奶牛(1<=B<=25000),有N(2*B<=N<=50000)个农场,编号1-N,有M(N-1<=M<=10 ...

  8. Oracle password expire notices

    /usr/local/webserver/tomcat6/logs/logbak/zsxxw.log.2015-03-21.txt:2015-03-22 00:47:26,366 ORA-28002: ...

  9. ranlib的作用 -----更新静态库的符号索引表

    摘自 http://blog.csdn.net/jubincn/article/details/6958840 更新静态库的符号索引表 本小节的内容相对简单.前边提到过,静态库文件需要使用“ar”来创 ...

  10. Hadoop 3、Hadoop 分布式存储系统 HDFS

    HDFS是Hadoop Distribute File System 的简称,也就是Hadoop的一个分布式文件系统. 一.HDFS的优缺点 1.HDFS优点: a.高容错性 .数据保存多个副本 .数 ...