路径

路径(Path)可以用来定义任意形状的曲线和几何图形,当然这种任意性也带来了复杂性。为了方便的绘制几何图形,微软在Visual Studio 2012安装包中为程序开发者提供了免费的Blend for Visual Studio设计工具,利用这个界面设计工具可以方便的绘制图形。

而对于开发者而言,有必要掌握的是如何通过编写代码的方式实现应用界面的开发,并可以轻松地阅读这些已经绘制好的图形代码。本节将介绍有关路径绘图的相关知识,帮助读者理解Path与PathGeometry的绘图原理。

8.2.1 Path

Path使用一种紧凑的字符串语法来描述几何形状的路径,这种语法可以称为路径标记语法。通过使用路径标记语法定义Data属性能实现几何图形的绘制。下面列出了路径标记语法所支持的常用命令,并对这些命令进行简单的介绍。

  • 移动命令,指定新图形的起点StartPoint,用字母M或m表示,大写的M表示起始点的绝对值,小写的m表示起始点相对于前一个点的偏移量。在Data属性中可以同时存在两个M或m命令。
  • 绘制命令,它是一个指令集合,用于描述几何图形的形状,例如直线、水平线和三次方贝塞尔曲线命令,将在下面对常用的绘制命令进行介绍。
  • 关闭命令,该指令的作用是结束当前绘制图形的操作,并绘制一条连接起始点和结束点的线,使用字母Z表示。

下面通过绘制一段曲线来演示如何使用Path,这段曲线由一条贝赛尔曲线和两条线段组成。在一个打开的Windows应用商店项目中新建一个空白页,并命名为PathPage,双击打开此页面的PathPage.xaml文件,在Grid元素中添加如下代码。

<Path Stroke="DarkGoldenRod" StrokeThickness="3" Data="M 10,10 C 20,100 40,250 200,175 H 280 Z"/>

运行此页面,效果如图8-7所示。

图8-7 path 图形运行效果图

在上面的代码中,首先定义Path的Stroke 属性为DarkGoldenRod、StrokeThickness属性为3,以便Path能呈现。接着定义Path的Data属性,这是决定图形的关键部分,使用M命令开始,指定此路径起点为(10,10)。

接着使用C命令绘制一段三次方贝塞尔曲线,通过定义四个点来创建一个三次方贝塞尔曲线,这四个点是起点、终点及两个控制点。其中起点可以理解为M命令指定的点或上一个路径片段的终点。三次方贝塞尔曲线的两个控制点的作用像磁铁一样,朝着自身的方向吸引本应为直线的部分,从而形成一条曲线。第一个控制点影响曲线的开始部分,第二个控制点影响曲线的结束部分。本示例的三次方贝塞尔曲线由起点 (10,10)、终点(200,175)以及两个控制点 (20,100) 、 (40,250) 绘制而成。

接着使用命令H,该命令从点(200,175)水平绘制到X轴坐标为280的点。最后使用命令Z连接此路径的结束点与起始点。

通过上面的示例相信读者对绘制命令有了一个初步的认识,下面列出几个常用的绘制命令。

  • L(直线),表示绘制一条线的命令,例如"L100,100"或"L100 100"。
  • H(水平直线),表示在当前点与指定的X轴坐标之间绘制一条水平直线,其中当前点可以理解为M命令指定的起点或上一个路径片段的终点。
  • V(竖直直线),表示在当前点与指定的Y轴坐标之间绘制一条竖直线。
  • C(三次方贝塞尔曲线命令),通过指定两个控制点来绘制由当前点到指定结束点间的三次方程贝塞尔曲线,例如"C20,100 40,250 200,175",其中点(20,100)表示第一个控制点,点(40,250)表示第二个控制点,最后一个点(200,175)表示结束点。

Win10系列:C#应用控件进阶6的更多相关文章

  1. Win10系列:JavaScript 控件的使用

    向页面中添加的控件可分为两种类型:标准的HTML控件和WinJS库控件.其中标准的HTML控件是指HTML标准中定义的基本控件,如按钮和复选框:WinJS库控件是为开发基于JavaScript 的Wi ...

  2. WPF 模仿 UltraEdit 文件查看器系列一 用户控件

    WPF 模仿 UltraEdit 文件查看器系列一 用户控件 运行环境:Win10 x64, NetFrameWork 4.8, 作者:乌龙哈里,日期:2019-05-10 章节: 起步 添加用户控件 ...

  3. C#控件系列--文本类控件

    C#控件系列--文本类控件         文本类控件主要包含Label.LinkLabel.Button.TextBox以及RichTextBox. Label 功能         Label用来 ...

  4. WPF从我炫系列4---装饰控件的用法

    这一节的讲解中,我将为大家介绍WPF装饰控件的用法,主要为大家讲解一下几个控件的用法. ScrollViewer滚动条控件 Border边框控件 ViewBox自由缩放控件 1. ScrollView ...

  5. WPF编游戏系列 之四 用户控件

    原文:WPF编游戏系列 之四 用户控件        在上一篇<WPF编游戏系列 之三 物品清单>中,对物品清单进行了演示,其中反复用到了同一组控件(如下图),而且 颜昌钢也指出在3.2. ...

  6. 【转】PyQt5系列教程(七)控件

    PyQt5系列教程(七)控件   软硬件环境 Windows 10 Python 3.4.2 PyQt 5.5.1 PyCharm 5.0.4 前言 控件是PyQt应用程序的基石.PyQt5自带很多不 ...

  7. Win10系列:C#应用控件进阶10

    EllipseGeometry EllipseGeometry控件可以用于绘制椭圆,通过定义EllipseGeometry控件的Center属性确定椭圆的圆心坐标,使用此控件的RadiusX 和Rad ...

  8. Win10系列:C#应用控件进阶8

    LineGeometry LineGeometry控件通过指定直线的起点和终点来定义线.LineGeometry对象无法进行自我绘制,因此同样需要使用 Path元素来辅助呈现.LineGeometry ...

  9. Win10系列:C#应用控件进阶9

    RectangleGeometry 在使用RectangleGeometry控件绘制矩形时,矩形的位置和尺寸由Rect属性定义,该属性指定矩形的相对位置.高度和宽度.Rect有四个参数,前两个参数表示 ...

  10. Win10系列:C#应用控件进阶7

    PathGeometry 前面介绍了Path的使用方法,接下来介绍PathGeometry类.PathGeometry提供了描绘由弧线.曲线和直线组成的多个复杂图形的方法.PathGeometry的核 ...

随机推荐

  1. vue 路由守卫

    router.beforeEach((to, from, next) => { const nextRoute = [ 'login']; var token = window.localSto ...

  2. 《视觉SLAM十四讲课后作业》第一讲

    1. 如何在 Ubuntu 中安装软件(命令⾏界⾯)?它们通常被安装在什么地⽅? 答:一般有两种安装方式(1)apt-get install (2)dpkg -i package.deb.系统软件一般 ...

  3. ltp-ddt nor qspi spi调试中需要修改的地方

    1 blk_device_dd_readwrite_test.sh before SRC_FILE="/home/root/srctest_file_${DEVICE_TYPE}_$$&qu ...

  4. varnish 相关说明

    一.关于Varnish Varnish 是一款高性能且开源的反向代理服务器和 HTTP 加速器,其采用全新的软件体系机构,和现在的硬件体系紧密配合,与传统的 squid 相比,varnish 具有性能 ...

  5. sqlmap学习笔记

    SQLmap 神仙工具Orz.需要安装python2.7环境. 语法 -u 指定url --is-dba 查询是否为数据库管理员(database administrator) --dbs 查询数据库 ...

  6. HDU 3085 Nightmare Ⅱ(噩梦 Ⅱ)

    HDU 3085 Nightmare Ⅱ(噩梦 Ⅱ) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Ja ...

  7. Lintcode174-Remove Nth Node From End of List-Easy

    174. Remove Nth Node From End of List Given a linked list, remove the nth node from the end of list ...

  8. 使用C#创建Windows服务 并发布Windows 服务

    一.开发环境 操作系统:Windows 10 X64 开发环境:VS2015 编程语言:C# .NET版本:.NET Framework 4.0 目标平台:X86 二.创建Windows Servic ...

  9. 大数据Hadoop——初识Hadoop

    Hadoop简介 官方网站:  http://hadoop.apache.org/ 中文网站:  http://hadoop.apache.org/docs/r1.0.4/cn/ Hadoop设计来源 ...

  10. cordova自定义插件的创建过程

    最近学习了cordova插件,记录一下大概的过程,仅供参考. 前期的配置就不记录了网上好多. 在简书上从新写了一个更详细的cordova插件教程,有需要的可以点这里进去看看. 第一步 创建一个cord ...