zoukankan      html  css  js  c++  java
  • WPF学习笔记(3):Path绘制命令zz

    WPF的XAML提供了一系列功能强大、用法复杂的 mini-language 来描述可扩展应用程序标记语言 (XAML) 中的几何路径。如下所示:

    XAML

    <Canvas>
      <Path Stroke="Black" Fill="Gray"
        Data="M 10,100 C 10,300 300,-200 300,100" />
    </Canvas>

    Command

    Name

    Description

    F i

    FillRule

    i=0:EvenOdd.

    i=1:NonZero.

    M x y

    Move

    Moveto (x, y).

    m x y

    Relative move

    Moveto (x0+x, y0+y).

    L x y

    Line

    Drawline to (x, y).

    l x y

    Relative line

    Drawline to (x0+x, y0+y).

    H x

    Horizontal line

    Drawline to (x, y0).

    h x

    Relative horizontal line

    Drawline to (x0+x, y0).

    V y

    Vertical line

    Drawline to (x0, y).

    v y

    Relative vertical line

    Drawline to (x0, y0+y).

    A xr yr a i j x y

    Arc

    Drawarc to (x, y) based on ellipse with radii (xr,yr) rotated a degrees.i=1:IsLargeArc. j=1: Clockwise.

    a xr yr a i j x y

    Relative arc

    Drawarc to (x0+x, y0+y).

    C x1 y1 x2y2x3 y3

    CubicBézier

    DrawBézier to (x3, y3) withcontrol points (x1, y1) and (x2, y2).

    c x1 y1 x2y2x3 y3

    Relative cubic Bézier

    DrawBézier to (x0+x3,y0+y3) with control points (x0+x1, y0+y1) and (x0+x2,y0+y2).

    S x2 y2 x3 y3

    Smooth cubic Bézier

    DrawBézier to (x3, y3) with reflected control point and (x2, y2).

    s x2 y2 x3y3

    Relative smooth cubic Bézier

    DrawBézier to (x0+x3,y0+y3) with reflected control point and (x0+x2,y0+y2).

    Q x1 y1 x2y2

    Quadratic Bézier

    Drawquadratic Bézier to (x2, y2)with control point (x1, y1).

    q x1 y1 x2y2

    Relative quadratic Bézier

    Drawquadratic Bézier to (x0+x2,y0+y2) with control point(x0+x1, y0+y1).

    Z

    z

    Closefigure

    分隔符和空白

    为简洁起见,下文中的语法部分显示的是单个空格,实际上在使用单个空格的地方也可以使用多个空格。

    如果结果字符串比较明确,则无需使用逗号或空白将两个数字隔开。例如,2..3 解释为两个数字:“2.”和“.3”。同样,2-3 包含两个数字:“2”和“-3”。

    命令前后的空格也不是必需的。

    语法

    XAML 路径语法由一个可选的 FillRule 值以及一个或多个图形说明组成。

    路径 XAML 属性用法

    <对象属性 ="[fillRule] figureDescription[ figureDescription]*" ... />

    术语

    说明

    fillRule

    FillRule

    指定该路径使用 EvenOdd 还是 NonZero 填充规则值:

    • F0 指定 EvenOdd 填充规则。

    • F1 指定 Nonzero 填充规则。

    如果省略此命令,则路径使用默认行为,即 EvenOdd。如果指定此命令,则必须将其置于最前面。

    figureDescription

    图形由移动命令、绘制命令和可选的关闭命令组成。

    moveCommand drawCommands [ closeCommand ]

    moveCommand

    指定图形起点的移动命令

    drawCommands

    一个或多个描绘图形内容的绘制命令

    closeCommand

    可选的关闭命令,用于关闭图形。

    移动命令

    指定新图形的起点。

    语法

    M startPoint

    - 或 -

    m startPoint

    术语

    说明

    startPoint

    Point

    图形的起点。

    大写的 M 指示 startPoint 是绝对值;小写的 m 指示 startPoint 是相对于上一个点的偏移量,如果是 (0,0),则表示不存在偏移。当您在 move 命令之后列出多个点时,即使您指定的是线条命令,也将绘制出连接这些点的线。

    绘制命令

    draw 命令可以由若干个形状命令组成。提供以下形状命令:直线水平线垂直线三次方贝塞尔曲线二次贝塞尔曲线平滑的三次方贝塞尔曲线平滑的二次贝塞尔曲线椭圆弧线

    通过使用一个大写或小写字母输入各命令:其中大写字母表示绝对值,小写字母表示相对值。线段的控制点是相对于上一线段的终点而言的。依次输入多个同一类型的命令时,可以省略重复的命令项;例如,L 100,200 300,400 等同于 L 100,200 L 300,400。

    直线命令

    在当前点与指定的终点之间创建一条直线。l 20 30 和 L 20,30 都是有效的 line 命令示例。

    语法

    L endPoint

    - 或 -

    l endPoint

    术语

    说明

    endPoint

    Point

    直线的终点。

    水平线命令

    在当前点与指定的 x 坐标之间创建一条水平线。H 90 是有效的水平线命令示例。

    语法

    H x

    - 或 -

    h x

    术语

    说明

    x

    Double

    线的终点的 x 坐标。

    垂直线命令

    在当前点与指定的 y 坐标之间创建一条垂直线。v 90 是有效的垂直线命令示例。

    语法

    V y

    - 或 -

    v y

    术语

    说明

    y

    Double

    线的终点的 y 坐标。

    三次方贝塞尔曲线命令

    通过使用两个指定的控制点(controlPoint1 和 controlPoint2)在当前点与指定的终点之间创建一条三次方贝塞尔曲线。C 100,200 200,400 300,200 是有效的曲线命令示例。

    语法

    C controlPoint1 controlPoint2 endPoint

    - 或 -

    c controlPoint1 controlPoint2 endPoint

    术语

    说明

    controlPoint1

    Point

    曲线的第一个控制点,用于确定曲线的起始正切值。

    controlPoint2

    Point

    曲线的第二个控制点,用于确定曲线的终止正切值。

    endPoint

    Point

    曲线将绘制到的点。

    二次贝塞尔曲线命令

    通过使用指定的控制点 (controlPoint) 在当前点与指定的终点之间创建一条二次贝塞尔曲线。q 100,200 300,200是有效的二次贝塞尔曲线命令示例。

    语法

    Q controlPoint endPoint

    - 或 -

    q controlPoint endPoint

    术语

    说明

    controlPoint

    Point

    曲线的控制点,用于确定曲线的起始和终止正切值。

    endPoint

    Point

    曲线将绘制到的点。

    平滑的三次方贝塞尔曲线命令

    在当前点与指定的终点之间创建一条三次方贝塞尔曲线。第一个控制点假定为前一个命令的第二个控制点相对于当前点的反射。如果前一个命令不存在,或者前一个命令不是三次方贝塞尔曲线命令或平滑的三次方贝塞尔曲线命令,则假定第一个控制点就是当前点。第二个控制点,即曲线终端的控制点,由 controlPoint2 指定。例如,S 100,200 200,300 是一个有效的平滑三次方贝塞尔曲线命令。

    语法

    S controlPoint2 endPoint

    - 或 -

    s controlPoint2 endPoint

    术语

    说明

    controlPoint2

    Point

    曲线的控制点,用于确定曲线的终止正切值。

    endPoint

    Point

    曲线将绘制到的点。

    平滑的二次贝塞尔曲线命令

    在当前点与指定的终点之间创建一条二次贝塞尔曲线。控制点假定为前一个命令的控制点相对于当前点的反射。如果前一个命令不存在,或者前一个命令不是二次贝塞尔曲线命令或平滑的二次贝塞尔曲线命令,则此控制点就是当前点。

    语法

    T controlPoint endPoint

    - 或 -

    t controlPoint endPoint

    术语

    说明

    controlPoint

    Point

    曲线的控制点,用于确定曲线的起始正切值。

    endPoint

    Point

    曲线将绘制到的点。

    椭圆弧线命令

    在当前点与指定的终点之间创建一条椭圆弧线。

    语法

    A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint

    - 或 -

    a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint

    术语

    说明

    大小

    x, y pair

    弧线的 x 轴半径和 y 轴半径。

    rotationAngle

    Double

    椭圆的旋转度数。

    isLargeArcFlag

    如果弧线的角度应大于或等于 180 度,则设置为 1;否则设置为 0。

    sweepDirectionFlag

    如果弧线按照正角方向绘制,则设置为 1;否则设置为 0。

    endPoint

    Point

    弧线将绘制到的点。

    关闭命令

    close 命令终止当前的图形并创建一条连接当前点和图形起点的线。此命令在图形的最后一个线段与第一个线段之间创建一条连线(转角)。

    语法

    Z

    - 或 -

    z

    点语法

    点语法描述点的 x 坐标和 y 坐标。

    语法

    x , y

    - 或 -

    x y

    术语

    说明

    x

    Double

    点的 x 坐标。

    y

    Double

    点的 y 坐标。

    特殊值

    除标准数值以外,您还可以使用以下特殊值。这些值区分大小写。

    说明

    Infinity

    表示正无穷大的 Double 值 (Double..::.PositiveInfinity)。

    -Infinity

    表示负无穷大的 Double 值 (Double..::.NegativeInfinity)。

    NaN

    表示 NaN Double 值 (Double..::.NaN)。

    此外,您还可以使用科学计数法。例如,+1.e17 是有效值。

  • 相关阅读:
    [转] css选择器中:first-child与:first-of-type的区别
    [转] Javascript中理解发布--订阅模式
    [转] 浅析JavaScript设计模式——发布-订阅/观察者模式
    [转] linux学习第四十四篇:Nginx安装,Nginx默认虚拟主机,Nginx域名重定向
    [转] meta标签的作用及整理
    [转] 安装npm全局包提示权限不够
    [转] UniCode编码表
    Unicode字符编码表
    [转] Lodash常用API笔记
    [转] JavaScript 之 ArrayBuffer
  • 原文地址:https://www.cnblogs.com/xpvincent/p/3761634.html
Copyright © 2011-2022 走看看