C
Qt Quick Ultralite shapes Example
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
import QtQuick 2.15
import QtQuick.Shapes 1.0
ShapesEntry {
id: root
text: "Fill rules"
Rectangle {
color: "lightGray"
anchors.top: parent.top
anchors.horizontalCenter: parent.horizontalCenter
anchors.margins: root.contentMargins
width: root.contentHeight
height: root.contentHeight
Shape {
width: 100
height: 100
scale: 1.4 * root.shapeScale
anchors.centerIn: parent
ShapePath {
id: star
strokeColor: "blue"
fillColor: "#55ff7788"
strokeWidth: 3
capStyle: ShapePath.RoundCap
joinStyle: ShapePath.RoundJoin
PathMove { x: 90; y: 50 }
PathLine { x: 50 + 40 * Math.cos(0.8 * 1 * Math.PI); y: 50 + 40 * Math.sin(0.8 * 1 * Math.PI) }
PathLine { x: 50 + 40 * Math.cos(0.8 * 2 * Math.PI); y: 50 + 40 * Math.sin(0.8 * 2 * Math.PI) }
PathLine { x: 50 + 40 * Math.cos(0.8 * 3 * Math.PI); y: 50 + 40 * Math.sin(0.8 * 3 * Math.PI) }
PathLine { x: 50 + 40 * Math.cos(0.8 * 4 * Math.PI); y: 50 + 40 * Math.sin(0.8 * 4 * Math.PI) }
PathLine { x: 90; y: 50 }
}
NumberAnimation on rotation {
from: 0
to: 360
duration: 5000
loops: Animation.Infinite
}
}
Text {
anchors.top: parent.top
anchors.right: parent.right
anchors.margins: 2
font.pixelSize: 10
text: star.fillRule === ShapePath.OddEvenFill ? "OddEvenFill" : "WindingFill"
}
}
Timer {
interval: 2000
onTriggered: star.fillRule = (star.fillRule === ShapePath.OddEvenFill ? ShapePath.WindingFill : ShapePath.OddEvenFill)
repeat: true
running: true
}
}