Skip to content

Path 元素允许渲染由不同几何命令组成的通用形状。可以对路径形状进行填充和描边。

当不作为布局的一部分时,若未指定宽度或高度,则默认为父元素 100% 的宽度或高度。

路径可以通过两种不同的方式定义:

  • 使用 SVG 路径命令的字符串形式
  • 使用 .slint 标记中的路径命令元素。

几何命令中使用的坐标位于该路径的虚拟坐标系内。 在屏幕上渲染时,形状相对于 xy 属性进行绘制。如果 widthheight 属性非零,则整个形状会被缩放以适应这些边界。

属性

fill

brush default: a transparent brush

用于填充路径形状的颜色。

fill-rule

enum FillRule default: nonzero

用于路径的填充规则。

FillRule

此枚举描述了如何确定由路径描述的形状的内部。

stroke

brush default: a transparent brush

用于绘制路径轮廓的颜色。

stroke-width

length default: 0px

轮廓的宽度。

stroke-line-cap

enum LineCap default: butt

路径轮廓端点的外观。

LineCap

此枚举描述描边路径端点的外观。

  • butt:描边以垂直于路径的平直边缘结束。
  • round:描边以圆角边缘结束。
  • square:描边以延伸到路径之外的方形端部结束。

stroke-line-join

enum LineJoin default: miter

描边路径各段之间连接处的外观。

LineJoin

此枚举描述描边路径各段之间连接处的外观。

  • miter:描边以尖角连接,必要时根据斜接限制对尖角进行裁剪。
  • round:描边以平滑的圆角连接。
  • bevel:描边以斜角(扁平)连接。

stroke-miter-limit

float default: 4

stroke-line-join 设置为 miter 时,斜接长度与描边宽度的比率上限。 当超过该限制时,连接处将改为以斜角方式渲染。

width

length default: 0px

如果非零,路径将被缩放以适应指定的宽度。

height

length default: 0px

如果非零,路径将被缩放以适应指定的高度。

Viewbox 属性

viewbox-x

float default: 0.0

viewbox-y

float default: 0.0

viewbox-width

float default: 0.0

viewbox-height

float default: 0.0

这四个属性用于在路径坐标系中定义路径视口的位置和大小。

如果 viewbox-widthviewbox-height 小于或等于零,则忽略 viewbox 属性, 而是使用所有路径元素的边界矩形来定义视口。

fit

enum ImageFit default: contain

定义路径的 view box 如何缩放以适应元素的宽度和高度。 如果未定义 view box,则使用隐式的边界矩形。

ImageFit

此枚举定义了源图像或路径如何适应 ImagePath 元素。

  • fill:缩放并拉伸源内容以适应元素的宽度和高度。
  • contain:缩放源内容以适应元素的尺寸,同时保持宽高比。
  • cover:缩放源内容以覆盖元素的尺寸,同时保持宽高比。如果宽高比不匹配,源内容将被裁剪以适应。
  • preserve:以逻辑像素为单位保留源内容的尺寸。源内容仍会按应用于窗口中所有元素的缩放因子进行缩放。任何多余的空间将留空。

clip

bool default: false

默认情况下,当路径定义了 view box 并且元素渲染到 其外部时,它们仍然会被渲染。当此属性设置为 true 时,渲染将 被裁剪到 view box 的边界。

anti-alias

bool default: true

默认情况下,路径的填充和描边会进行抗锯齿渲染,以获得最佳质量。某些 GPU 在使用抗锯齿渲染和动画时存在性能问题。将该值设置为 false 可能会以牺牲路径的平滑度为代价来提高帧率。

使用 SVG 命令的路径

SVG 是一种流行的可缩放图形文件格式,通常由路径组成。在 SVG 中, 路径通过 命令 组合而成, 这些命令写在一个字符串中。在 .slint 中,路径命令通过 commands 属性提供。下面的示例渲染一个由圆弧和矩形组成的形状,由 line-tomove-toarc 命令组成:

slint
export component Example inherits Path {    width: 100px;    height: 100px;    commands: "M 0 0 L 0 100 A 1 1 0 0 0 100 100 L 100 0 Z";    stroke: red;    stroke-width: 1px;}

命令通过属性提供:

Commands

string default: ""

根据 SVG 路径规范提供命令的字符串。 此属性只能在绑定中设置,不能在表达式中访问。

使用 SVG 路径元素的路径

路径的形状也可以使用与 SVG 路径命令类似但使用 .slint 标记语法的元素来描述。 上面使用 SVG 命令的示例也可以写成这样:

slint
export component Example inherits Path {    width: 100px;    height: 100px;    stroke: blue;    stroke-width: 1px;
    MoveTo {        x: 0;        y: 0;    }    LineTo {        x: 0;        y: 100;    }    ArcTo {        radius-x: 1;        radius-y: 1;        x: 100;        y: 100;    }    LineTo {        x: 100;        y: 0;    }    Close {    }}

请注意,路径元素的坐标不使用单位——它们在可缩放路径的虚拟 坐标系中运作。

Path 的 MoveTo 子元素

MoveTo 子元素会在存在的情况下关闭当前子路径,并将当前点 移动到由 xy 属性指定的位置。后续的 LineTo 等元素 将以此新位置作为其起点,因此这将开启一个新的子路径。

x

float default: 0.0

新当前点的 x 位置。

y

float default: 0.0

新当前点的 y 位置。

Path 的 LineTo 子元素

LineTo 子元素描述了一条从路径当前位置到由 xy 属性指定位置的直线。

x

float default: 0.0

直线的目标 x 位置。

y

float default: 0.0

直线的目标 y 位置。

Path 的 ArcTo 子元素

ArcTo 子元素描述了椭圆的一段圆弧。圆弧从路径 当前位置绘制到由 xy 属性指定的位置。其余属性 参照 SVG 规范建模,允许调节方向 或角度等视觉特性。

large-arc

bool default: false

在闭合椭圆的两段弧中,此标志选择渲染较大的那一段弧。如果该属性为 false,则改为渲染较短的弧。

radius-x

float default: 0.0

椭圆的 x 半径。

radius-y

float default: 0.0

椭圆的 y 半径。

sweep

bool default: false

如果该属性为 true,则圆弧将按顺时针方向绘制;否则按逆时针方向。

x-rotation

float default: 0.0

椭圆的 x 轴将按该属性的值旋转,以角度为单位,取值范围为 0 到 360 度。

x

float default: 0.0

直线的目标 x 位置。

y

float default: 0.0

直线的目标 y 位置。

Path 的 CubicTo 子元素

CubicTo 子元素描述了一条从路径当前位置到 由 xy 属性指定位置的光滑贝塞尔曲线,使用由其 各自属性指定的两个控制点。

control-1-x

float default: 0.0

曲线第一个控制点的 x 坐标。

control-1-y

float default: 0.0

曲线第一个控制点的 y 坐标。

control-2-x

float default: 0.0

曲线第二个控制点的 x 坐标。

control-2-y

float default: 0.0

曲线第二个控制点的 y 坐标。

x

float default: 0.0

曲线的目标 x 位置。

y

float default: 0.0

曲线的目标 y 位置。

Path 的 QuadraticTo 子元素

QuadraticTo 子元素描述了一条从路径当前位置到 由 xy 属性指定位置的光滑贝塞尔曲线,使用由 control-xcontrol-y 属性指定的控制点。

control-x

float default: 0.0

曲线控制点的 x 坐标。

control-y

float default: 0.0

曲线控制点的 y 坐标。

x

float default: 0.0

曲线的目标 x 位置。

y

float default: 0.0

曲线的目标 y 位置。

Path 的 Close 子元素

Close 元素会关闭当前子路径,并从当前位置 到路径起点绘制一条直线。

基于 MIT 协议发布