Shape
一、描述
Shape 通过 QPainterPath 生成几何图形或使用 GPU来渲染路径。
这种方法与通过 QQuickPaintedItem 或 2D Canvas 渲染形状不同,因为路径永远不会在软件中光栅化。因此,Shape 适用于创建分布在屏幕更大区域的形状,避免纹理上传或帧缓冲区 blit 的性能损失。
Window
{
id:win
visible: true
width: 800
height: 480
title: "测试"
Shape
{
anchors.fill: parent
ShapePath
{
strokeWidth: 4
strokeColor: "red"
fillGradient: LinearGradient
{
x1: 20; y1: 20
x2: 180; y2: 130
GradientStop { position: 0; color: "blue" }
GradientStop { position: 0.2; color: "green" }
GradientStop { position: 0.4; color: "red" }
GradientStop { position: 0.6; color: "yellow" }
GradientStop { position: 1; color: "cyan" }
}
strokeStyle: ShapePath.DashLine
dashPattern: [ 1, 4 ]
startX: 20; startY: 20
PathLine { x: 180; y: 130 }
PathLine { x: 20; y: 130 }
PathLine { x: 20; y: 20 }
}
}
}
与 Item 一样,Shape 也允许将任何可视或非可视对象声明为子对象。ShapePath 对象经过特殊处理,它允许添加可视项(如 Rectangle 或 Image)和非可视对象(如 Timer)直接作为 Shape 的子项。
二、属性成员
1、asynchronous : bool
默认值为 false。
启用:不会等待内容变为可用才使形状可见。
不启用:GUI/主线程不会被阻塞,只有在所有异步工作都完成后才会显示路径渲染的结果。
2、containsMode : enumeration
该属性决定了 Shape 的 contains() 定义。
- Shape.BoundingRectContains:QQuickItem::contains() 的默认实现只检查给定点是否在矩形边界框内。
- Shape.FillContains:检查构成此 Shape 的任何 ShapePath 的内部是否包含给定点。添加的 ShapePath 越复杂、数量越多,检查的效率就越低,这可能会减慢应用程序中的事件传递速度。所以应该谨慎使用。
3、[default] data : list<Object>
此属性包含定义 Shape 内容的 ShapePath 对象。它还可以包含任何其他类型的对象,因为 Shape 与 Item 一样,允许将任何可视或非可视对象添加为子对象。
4、rendererType : enumeration
此属性确定哪个路径渲染后端处于活动状态。
- Shape.UnknownRenderer:渲染器未知。
- Shape.GeometryRenderer:通用的、独立于驱动程序的 OpenGL 解决方案。
- Shape.SoftwareRenderer:使用光栅绘制引擎的纯 QPainter 绘图。
5、status : enumeration
此属性确定 Shape 的状态,并且在 asynchronous 设置为 true 时相关。
- Shape.Null:尚未初始化。
- Shape.Ready:已完成处理。
- Shape.Processing:正在处理。
6、vendorExtensionsEnabled : bool
此属性控制非标准 OpenGL 扩展的使用情况。默认值为 false。
ShapePath
一、描述
一个 Shape 包含一个或多个 ShapePath 元素。至少需要一个 ShapePath 才能使 Shape 输出任何可见的内容。
ShapePath 本身是一个 Path,具有描述描边和填充参数的附加属性。
二、属性成员
1、capStyle : enumeration
此属性定义如何绘制线的端点。 默认值为 ShapePath.SquareCap。
- ShapePath.FlatCap:不覆盖线端点的方形线端。
- ShapePath.SquareCap:方形线端,覆盖端点并超出它的线宽的一半。
- ShapePath.RoundCap:圆形的线端。
2、dashOffset : real
此属性定义虚线图案的起点。默认值为 0。
3、fillGradient : ShapeGradient
此属性定义填充渐变。
默认情况下没有启用渐变。在这种情况下,填充使用基于 fillColor 值的纯色。
设置后,将忽略 fillColor。
一般使用 ShapeGradient 的子类:
- RadialGradient:辐射渐变
- LinearGradient:线性渐变
- ConicalGradient:锥形渐变
4、fillRule : enumeration
此属性包含填充规则。
- ShapePath.OddEvenFill:默认
- ShapePath.WindingFill
填充规则。
5、joinStyle : enumeration
此属性定义如何绘制两条连接线之间的连接。 默认值为 ShapePath.BevelJoin。
- ShapePath.MiterJoin:线的外边缘延伸成一个角度相交,并填充该区域。
- ShapePath.BevelJoin:填充两条线之间的三角形凹口。
- ShapePath.RoundJoin:填充两条线之间的圆弧。
6、miterLimit : int
当 joinStyle 设置为 ShapePath.MiterJoin 时,此属性指定斜接连接可以从连接点延伸多远。
默认值为 2。
7、strokeColor : color
此属性保留描边颜色。设置为透明时,不会发生描边。默认值为白色。
8、strokeStyle : enumeration
此属性定义了描边的样式。 默认值为 ShapePath.SolidLine。
- ShapePath.SolidLine:一条普通线。
- ShapePath.DashLine:由几个像素分隔的虚线。
9、strokeWidth : real
此属性保存笔画宽度。当设置为负值时,不会发生描边。默认值为 1。
EllipseShape
一、描述
椭圆形状。继承自 Shape。
粒子系统发射器子类和影响器子类可以使用此形状使它们作用于椭圆形区域。
二、属性成员
1、fill : bool
如果 fill 为 true,则填充椭圆;否则它只是一个边界。默认为 true。
LineShape
一、描述
线形状。继承自 Shape。
二、属性成员
1、mirrored : bool
默认情况下,该线形状从 (0,0) 到应用此形状的项目的 (width, height)。
如果 mirrored 设置为 true,这将沿 y 轴镜像。 然后该行将从 (0,height) 到 (width, 0)。
MaskShape
一、描述
图像掩码形状。继承自 Shape。可用于将图像表示为影响器和发射器的形状。
二、属性
1、source : url
用作掩码的图像。在形状内部具有非零不透明度的区域。