WPF的图形微语言

WPF的图形微语言

前言

WPF为定义几何图形增加了一种更简明的替换语法,通过该语法可用更少的标记表示详细的图形,这种语法称为图形微语言,并且由于应用于Path元素,也称为路径微语言。

示例

使用两条闭合路径创建了一个基本三角形

xml 复制代码
<Path Stroke="Blue">
	<Path.Data>
		<PathGeometry>
			<PathFigure IsClosed="True" StartPoint="10,100">
				<LineSegment Point="100,100"/>
				<LineSegment Point="100,50"/>
			</PathFigure>
		</PathGeometry>
	</Path.Data>
</Path>

使用微语言创建该图形

xml 复制代码
<Path Stroke="Blue" Data="M 10,100 L 100,100 L 100,50 Z"/>

这个路径使用一个包含4个命令序列,第一个命令M创建PathFigure,并将起点设置为(10,100),接下来的两个命令L创建线段,最后一个命令Z结束PathFigure,并将IsClose属性设置为true,这个字符串的逗号是可选的,同样命令及其参数之间的空格也是可选的,但在相邻的两个参数之间以及命令之间要保留一个空格。

进一步精简为下面的形式:

xml 复制代码
<Path Stroke="Blue" Data="M10 100 L100 100 L100 50 Z"/>

当使用微语言创建几何图形时,实际上是创建了StreamGeometry对象而不是PathGeometry对象,因此,以后再代码中不能修改图形。如果这是不能接受的,可显示的创建PathGeometry,但使用相同的语法定义其PathFigure对象几何。

xml 复制代码
<Path Stroke="Blue">
	<Path.Data>
		<PathGeometry Figures="M 10,100 L 100,100 L 100,50 Z"/>
	</Path.Data>
</Path>
名称 说明
F value 设置Geometry.FillRule属性。0表示EvenOdd,1表示NoneZero。如果决定使用该命令,就必须将该命令放在字符串的开头
M x,y 为几何图形创建新的PathFigure对象,并设置其起点。
L x,y 创建一条到指定点的LineSegment几何图形。
H x,y 使用指定的X值创建一条水平的LineSegment几何图形,并保持Y值不变。
V x,y 使用指定的Y值创建一条水平的LineSegment几何图形,并保持X值不变。
A radiusX,radiusY 创建一条到指定点的ArgSegment线段。
C x1,y1,x2,y2 x,y 创建到指定点的贝塞尔曲线,使用(x1,y1)和(x2,y2)作为控制点。
Q x1,y1 x,y 创建到指定点的二次贝塞尔曲线,使用一个控制点(x1,y1)。
S x2,y2 x,y 通过将前一条贝塞尔曲线的第二个控制点作为新建贝塞尔曲线的第一个控制点,从而创建一条光滑的贝塞尔曲线。
Z 结束当前PathFigure对象,并将IsClosed属性设置为true。如果不希望将IsClosed属性设置为true,就不必使用该命令。如果希望开始一个新的PathFigure对象或者结束字符串,只需使用M命令
相关推荐
九鼎科技-Leo2 小时前
什么是 WPF 中的依赖属性?有什么作用?
windows·c#·.net·wpf
麻花201312 小时前
C#之WPF的C1FlexGrid空间的行加载事件和列事件变更处理动态加载的枚举值
开发语言·c#·wpf
lcintj12 小时前
【WPF】Prism学习(九)
学习·wpf·prism
界面开发小八哥12 小时前
界面控件DevExpress WPF中文教程:网格视图数据布局的列和卡片字段
wpf·界面控件·devexpress·ui开发·用户界面
△曉風殘月〆12 小时前
如何在WPF中嵌入其它程序
wpf
Crazy Struggle12 小时前
功能齐全的 WPF 自定义控件资源库(收藏版)
.net·wpf·ui控件库
shepherd枸杞泡茶1 天前
WPF动画
c#·.net·wpf
lcintj1 天前
【WPF】Prism学习(十)
学习·wpf·prism
wyh要好好学习1 天前
WPF数据加载时添加进度条
ui·wpf
code_shenbing1 天前
跨平台WPF框架Avalonia教程 三
前端·microsoft·ui·c#·wpf·跨平台·界面设计