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命令
相关推荐
月落.4 小时前
WPF的<ContentControl>控件
wpf
就是有点傻4 小时前
WPF中的依赖属性
开发语言·wpf
wangnaisheng4 小时前
【WPF】把一个Window放在左上角/右上角顶格显示
wpf
WineMonk4 小时前
.NET WPF CommunityToolkit.Mvvm框架
.net·wpf·mvvm
月落.4 小时前
WPF中的INotifyPropertyChanged接口
wpf
界面开发小八哥4 小时前
界面控件DevExpress WPF中文教程:Data Grid——卡片视图设置
.net·wpf·界面控件·devexpress·ui开发
平凡シンプル4 小时前
WPF 打包
wpf
VickyJames5 小时前
基于XAML框架和跨平台项目架构设计的深入技术分析
wpf·开源分享·unoplatform·winui3·项目架构
冷眼Σ(-᷅_-᷄๑)8 小时前
WPF缩放动画和平移动画叠加后会发生什么?
wpf·动画
△曉風殘月〆10 小时前
WPF MVVM入门系列教程(二、依赖属性)
c#·wpf·mvvm