WPF 路径和几何图形
原文 http://www.cnblogs.com/laoyang999/archive/2012/11/23/2783734.html
继承自Shap类的形状有:Rectangle、Ellipse、Polygon以及Polyline。这些类相对比较简单,还有一个继承自Shap类,并且功能最强大的类,即Path类。Path类可以包含任何简单形状、多组形状以及更复杂的要素,如曲线。
Path类提供了一个Data属性,该属性接受一个Geometry对像,Geometry是一个抽像类,不能直接创建。而需要使用如下的某个派生类创建。
- LineGeometry:线
- RectangleGeometry:矩形
- EllipseGeometry:椭圆
- GeometryGroup:图形组
- CombinedGeometry:合并图形
- PathGeometry :代表一个更加复杂的图形
- 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 路径和几何图形的更多相关文章
- 【WPF学习】第四十三章 路径和几何图形
前面四章介绍了继承自Shape的类,包括Rectangle.Ellipse.Polygon以及Polyline.但还有一个继承自Shape的类尚未介绍,而且该类是到现在为止功能最强大的形状类,即Pat ...
- WPF入门(三)->几何图形之不规则图形(PathGeometry) (2)
原文:WPF入门(三)->几何图形之不规则图形(PathGeometry) (2) 上一节我们介绍了PathGeometry中LineSegment是点与点之间绘制的一条直线,那么我们这一节来看 ...
- WPF入门(三)->几何图形之不规则图形(PathGeometry)
原文:WPF入门(三)->几何图形之不规则图形(PathGeometry) 前面我们给大家介绍了LineGeometry,EllipseGeometry,CombinedGeometry等一些规 ...
- WPF入门(三)->几何图形之矩形(RectangleGeometry)
原文:WPF入门(三)->几何图形之矩形(RectangleGeometry) 我们可以使用RectangleGeometry来绘制一个矩形或者正方形 RectangleGeometry 类:描 ...
- WPF入门(三)->几何图形之椭圆形(EllipseGeometry)
原文:WPF入门(三)->几何图形之椭圆形(EllipseGeometry) 我们可以使用EllipseGeometry 来绘制一个椭圆或者圆形的图形 EllipseGeometry类: 表示圆 ...
- WPF入门(三)->几何图形之线条(LineGeometry)
原文:WPF入门(三)->几何图形之线条(LineGeometry) 前一章我们对wpf的xaml语言有了一定的了解,那么我们现在开始来学习如何使用wpf来画出几何图形. LineGeometr ...
- C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码
原文:C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码 C#WPF 如何绘制几何图形? 怎么绘制坐标系?绘制sin曲线(正弦曲线)? 这离不开Path(Syst ...
- WPF动画应用-几何图形扩散动画
原文:WPF动画应用-几何图形扩散动画 最终效果图: 本实例中用到了DoubleAnimation和Storyboard两个类. 如果想系统学习的话可以直接点击链接看官方文档. 源码: 首先,在页面上 ...
- WPF路径动画(动态逆向动画)
WPF 中的Path.Data 不再多介绍,M开始坐标点 C弧度坐标点 L 直线坐标点 <Path x:Name="path0" Data="M 10,100 C ...
随机推荐
- js循环遍历
//获取多个用户id 一般用在复选框 cust_id = 1,2,3,4; var str = cust_id.split(","); for (var key ...
- mysql 1054错误
往数据库插入数据的时候报错,插入数据的是这样的 [SQL] insert into stock(code,name,b_price,s_price,num,rate,profit) values (1 ...
- externn "C"解析
1.揭密extern "C" extern "C"包含双重含义,从字面上即可得到:首先,被它修饰的目标是 "extern”的:其次,被它修饰的目标是 ...
- Gradle方式构建Java多项目
0: 安装IDEA:Linux 上只需下载IDEA的包 并且将路径配置在PATH全局变量中./etc/profile export PATH=$PATH:/opt/Software/IDEA/idea ...
- linux上应用随机启动
这是个go项目,其他的可以参考. 首先要有个脚本比如demo #!/bin/bash # # etcd This shell script takes care of starting and sto ...
- Eclipse被汉化后恢复EN模式
问题描述: 在安装Flush builder 的时候安装了汉化包,导致Eclipse中功能显示为汉字. 问题解决: 在Eclipse快捷方式下“目标”路径中添加-nl "EN"即可 ...
- UML_交互图
交互图(Interaction Diagram)用来描述系统中的对象是如何进行相互作用的.即一组对象是如何进行消息传递的. 当交互图建模时,通常既包括对象(每个对象都扮演某一特定的角色),又包括消息( ...
- javascript第十四课,方法的扩展prototype
所谓扩展方法就是,在原函数的基础上我们往对象里面添加一些自己需要的方法,例如: string对象 string.prototype.checkEmail=function(){ //方法体 //在这里 ...
- 自制证书搭建https服务
第一步,自制CA证书和Server证书,私钥 自制CA私钥 openssl genrsa -des3 -out ca.key 4096 自制CA证书 openssl req -new -x509 -d ...
- IOS开发之——获取屏幕的尺寸及各模拟器代表的型号
获取屏幕尺寸 [[[UIScreen mainScreen] currentMode].size.width]; [[[UIScreen mainScreen] currentMode].size.h ...