WPF提供两个类来描述路径数据:一个是StreamGeometry,另一个是PathFigureCollection。
<Path Stroke="Black" Data="M 100,240 C 510,300 80,100 300,160 H40 v80" />的形式是StreamGeometry的XAML代码表示形式,也是最简洁的表示形式。
<Path Stroke="Black" StrokeThickness="1" Fill="#CCCCFF">
<Path.Data>
<PathGeometry Figures="M 10,100 C 10,300 300,-160 300,100" />
</Path.Data>
</Path>
这样的方式是使用PathFigureCollection的XAML代码表示方式。
这两种方式都可以达至同一种显示效果,那么,什么时候使用StreamGeometry,什么时候使用PathFigureCollection方式呢?
一般地,当你建立路径后,不再需要修改时,可使用StreamGeometry方式,如果还需要对路径数值进行修改,则使用PathFigureCollection方式(这里就是PathGeometry)。
下面来解释一下“M 100,240 C510,300 80,100 300,160 H40 v80”这样字符串的意义。
分为四种情况来解释:
1. 移动指令:Move Command(M):M 起始点 或者:m 起始点
比如:M 100,240或m 100,240
使用大写M时,表示绝对值; 使用小写m时; 表示相对于前一点的值,如果前一点没有指定,则使用(0,0)。
2. 绘制指令(Draw Command):
我们可以绘制以下形状:
(1) 直线:Line(L)
(2) 水平直线: Horizontal line(H)
(3) 垂直直线: Vertical line(V)
(4) 三次方程式贝塞尔曲线: Cubic Bezier curve(C)
(5) 二次方程式贝塞尔曲线: Quadratic Bezier curve(Q)
(6) 平滑三次方程式贝塞尔曲线: Smooth cubic Bezier curve(S)
(7) 平滑二次方程式贝塞尔曲线: smooth quadratic Bezier curve(T)
(8) 椭圆圆弧: elliptical Arc(A)
上面每种形状后用括号括起的英文字母为命令简写的大写形式,但你也可以使用小写。使用大写与小写的区别是:大写是绝对值,小写是相对值。
比如:L 100, 200 L 300,400表示从绝对坐标点(100,200)到另一绝对坐标点(300,400)的一条直线。而l 100, 200 l 300,400则表示相对上一点(如果未指定,则默认为(0,0)坐标点)开始计算的坐标点(100,200)到坐标点为(300,400)的一条直线。
当我们重复使用同一种类型时,就可以省略前面的命令。比如:L 100, 200 L 300,400简写为:L 100, 200 300,400。
<Path Stroke="Black" StrokeThickness="1" Data="M 10,10 100,10 100,40 Z M 10,100 L 100,100 100,50 Z" />
这里有一个你暂时还没见过的Z指令,它就是一个关闭指令(close Command),表示封闭指定形状,即将首尾点连接起来形成封闭的区域。
绘制指令格式语法:
(1) 直线:Line(L)
格式:L 结束点坐标 或: l 结束点坐标。
比如:L 100,100 或 l 100 100。坐标值可以使用x,y(中间用英文逗号隔开)或x y(中间用半角空格隔开)的形式。
(2) 水平直线 Horizontal line(H):绘制从当前点到指定x坐标的直线。
格式:H x值 或 h x值(x为System.Double类型的值)
比如:H 100或h 100,也可以是:H 100.00或h 100.00等形式。
(3) 垂直直线 Vertical line(V):绘制从当前点到指定y坐标的直线。
格式:V y值 或 v y值(y为System.Double类型的值)
比如:V 100或y 100,也可以是:V 100.00或v 100.00等形式。
(4) 三次方程式贝塞尔曲线 Cubic Bezier curve(C):通过指定两个控制点来绘制由当前点到指定结束点间的三次方程贝塞尔曲线。
格式:C 第一控制点 第二控制点 结束点 或 c 第一控制点 第二控制点 结束点
比如:C 100,200 200,400 300,200 或 c 100,200 200,400 300,200
其中,点(100,200)为第一控制点,点(200,400)为第二控制点,点(300,200)为结束点。
(5) 二次方程式贝塞尔曲线 Quadratic Bezier curve(Q):通过指定的一个控制点来绘制由当前点到指定结束点间的二次方程贝塞尔曲线。
格式:Q 控制点 结束点 或 q 控制点 结束点
比如:q 100,200 300,200。其中,点(100,200)为控制点,点(300,200)为结束点。
(6) 平滑三次方程式贝塞尔曲线: Smooth cubic Bezier curve(S):通过一个指定点来“平滑地”控制当前点到指定点的贝塞尔曲线。
格式:S 控制点 结束点 或 s 控制点 结束点
比如:S 100,200 200,300
(7) 平滑二次方程式贝塞尔曲线 smooth quadratic Bezier curve(T):与平滑三次方程贝塞尔曲线类似。
格式:T 控制点 结束点 或 t 控制点 结束点
比如:T 100,200 200,300
(8) 椭圆圆弧: elliptical Arc(A) : 在当前点与指定结束点间绘制圆弧。
A 尺寸 圆弧旋转角度值 优势弧的标记 正负角度标记 结束点
或:
a 尺寸 圆弧旋转角度值 优势弧的标记 正负角度标记 结束点
尺寸(Size): System.Windows.Size类型,指定椭圆圆弧X,Y方向上的半径值。
旋转角度(rotationAngle):System.Double类型。
圆弧旋转角度值(rotationAngle):椭圆弧的旋转角度值。
优势弧的标记(isLargeArcFlag):是否为优势弧,如果弧的角度大于等于180度,则设为1,否则为0。
正负角度标记(sweepDirectionFlag):当正角方向绘制时设为1,否则为0。
结束点(endPoint):System.Windows.Point类型。
3. 关闭指令(close Command):用以将图形的首、尾点用直线连接,以形成一个封闭的区域。
用Z或z表示。
也可以参考:http://winsystem.ctocio.com.cn/21/9389021.shtml
分享到:
相关推荐
在本文中,我们将深入探讨如何使用C#编程语言在Windows Presentation Foundation(WPF)环境中实现一个全面的FTP客户端。FTP(文件传输协议)是互联网上用于传输文件的标准协议,而C#提供了丰富的类库来支持FTP操作...
在C# WPF环境中,动态曲线显示是一项常见的需求,特别是在数据可视化、实时监控或图形用户界面设计中。WPF(Windows Presentation Foundation)是.NET Framework的一部分,提供了强大的图形渲染能力和丰富的UI设计...
WPF元素绑定详解 WPF元素绑定是指在WPF应用程序中,将数据从一个源对象绑定到目标对象的属性上,从而实现数据的显示和交互。元素绑定是WPF数据绑定的基础形式,通过将源对象的依赖项属性绑定到目标对象的属性上,...
**WPF温度计控件详解** 在Windows Presentation Foundation (WPF)中,开发自定义控件是一项常见的任务,尤其在创建具有独特用户界面的桌面应用时。本篇将深入探讨如何设计并实现一个WPF温度计控件,该控件可以用于...
**基于WPF的LeapMotion C#程序详解** 在当今的计算机技术领域,用户交互体验的提升成为了关键。LeapMotion技术的出现,为无接触式、自然的手势控制提供了可能,而Windows Presentation Foundation(WPF)作为.NET ...
**WPF绑定(绑定)详解实例** 在Windows Presentation Foundation (WPF)中,数据绑定是一种强大的功能,它允许用户界面(UI)元素与应用程序中的数据模型进行交互。通过数据绑定,UI可以直接反映数据的变化,反之亦然,...
**WPF仪表盘源码详解** Windows Presentation Foundation (WPF) 是Microsoft开发的一种用户界面框架,用于构建桌面应用程序。在“WPF仪表盘源码”这个项目中,开发者提供了用WPF技术实现的仪表盘应用的源代码。下面...
**WPF仪表盘控件详解** 在Windows Presentation Foundation(WPF)中,开发人员可以利用其强大的图形渲染能力创建各种自定义控件,包括复杂的仪表盘。本篇将深入探讨如何利用WPF来绘制一个可定制的仪表盘控件,包括...
在2D火焰效果中,可能涉及到Path几何形状来绘制火焰轮廓,或者使用BitmapEffects如Blur和DropShadow来增强视觉效果。 2. **动画系统**:WPF的动画系统允许开发者创建时间依赖的效果,这对于模拟火焰的动态变化至关...
**MediaElement控件详解:** 1. **基本使用:** MediaElement控件非常简单易用。首先,你需要在XAML布局文件中添加该控件,并设置其Source属性为要播放的视频文件路径。例如: ```xml ...
**WPF仪表盘源码详解** Windows Presentation Foundation (WPF) 是Microsoft开发的一种用户界面框架,用于构建桌面应用程序。在给定的“WPF仪表盘源码”中,我们可以深入探讨如何利用WPF来创建一个功能丰富的仪表盘...
ProcessStartInfo startInfo = new ProcessStartInfo("path_to_exe"); startInfo.CreateNoWindow = true; // 隐藏原始窗口 Process childProcess = Process.Start(startInfo); ``` 2. **获取子进程窗口句柄** ...
**WPF用户控件样本详解** Windows Presentation Foundation (WPF) 是Microsoft开发的一种用于构建桌面应用程序的框架,它集成了图形、布局、数据绑定、多媒体和用户体验设计等多个方面,为开发者提供了丰富的功能和...
### WPF基础知识与核心概念详解 #### 一、引言 《Illustrated WPF》这本书由Daniel M. Solis编写并配图,旨在快速而简洁地教授WPF(Windows Presentation Foundation)的基础知识及其背后的运作机制。本书通过文字...
### WPF 应用程序开发知识点详解 #### 一、WPF 概述与应用程序管理 **Windows Presentation Foundation (WPF)** 是一个由微软提供的框架,用于开发具有丰富图形界面的应用程序。它提供了构建多种类型应用程序的...
**WPF自动提示TextBox详解** 在Windows Presentation Foundation (WPF)框架中,为用户提供自动提示功能,能够极大地提升用户体验,使用户在输入时得到实时的引导。这种功能通常被称为AutoCompleteBox或者...
**WPF Toolkit Chart详解** WPF (Windows Presentation Foundation) Toolkit 是微软提供的一个开源库,它扩展了.NET Framework的WPF框架,提供了丰富的UI控件和数据可视化工具。在本文件中,我们关注的是WPF ...
**WPF MVVM 数据绑定详解** 在Windows Presentation Foundation(WPF)中,MVVM(Model-View-ViewModel)设计模式是一种广泛使用的架构模式,它强调将应用程序的逻辑、用户界面和数据模型分离,以实现更好的可测试...
**WPF CheckedComboBox详解** 在Windows Presentation Foundation (WPF)框架中,我们经常需要创建具有复选框功能的组合框(ComboBox),以便用户可以多选项目。这种组件通常被称为CheckedComboBox或...
**描述详解:** 1. **WPF动画基础**:WPF是.NET Framework的一部分,它提供了一种声明式的方式来构建富客户端应用程序,包括复杂的UI设计和动画效果。WPF的动画系统允许开发者通过定义时间线来创建动态的视觉变化,...