Построение путей
Как мы видели в предыдущем разделе, фигуры строятся из путей, которые строятся из элементов путей. Самый распространенный способ построить путь – замкнуть его, т. е. обеспечить, чтобы он начинался и заканчивался в одной и той же точке. Однако можно создавать и открытые пути, например, только для обводки. При заливке открытого пути путь закрывается прямой линией, просто добавляя PathLine, который используется при заливке пути, но не при его обводке.
Как показано на рисунке ниже, есть несколько базовых фигур, которые можно использовать для построения пути. Это: линии, дуги и различные кривые. Также можно перемещаться без рисования с помощью элемента PathMove. В дополнение к этим элементам элемент ShapePath также позволяет указать начальную точку с помощью свойств startX и startY.
Линии рисуются с использованием элемента PathLine, как показано ниже. Для создания нескольких независимых линий можно использовать PathMultiline.
Shape {
ShapePath {
strokeWidth: 3
strokeColor: "darkgray"
startX: 20; startY: 70
PathLine {
x: 180
y: 130
}
}
}
При создании ломаной линии, т.е. линии, состоящей из нескольких отрезков, можно использовать элемент PathPolyline. Это избавляет от необходимости много печатать, так как конечная точка последней линии считается начальной точкой следующей линии.
Shape {
ShapePath {
strokeWidth: 3
strokeColor: "darkgray"
PathPolyline {
path: [
Qt.point(220, 100),
Qt.point(260, 20),
Qt.point(300, 170),
Qt.point(340, 60),
Qt.point(380, 100)
]
}
}
}
Для создания дуг, т.е. сегментов окружностей или эллипсов, используются элементы PathArc и PathAngleArc. Они предоставляют вам инструменты для создания дуг, где PathArc используется, когда вы знаете координаты начальной и конечной точек, а PathAngleArc полезен, когда вы хотите контролировать, сколько градусов проходит дуга. Оба элемента выдают один и тот же результат, поэтому какой из них вы используете, зависит от того, какие аспекты дуги являются наиболее важными в вашем приложении.
Shape {
ShapePath {
strokeWidth: 3
strokeColor: "darkgray"
startX: 420; startY: 100
PathArc {
x: 580; y: 180
radiusX: 120; radiusY: 120
}
}
}
После линий и дуг следуют различные кривые. Здесь Qt Quick Shapes предоставляет три варианта. Во-первых, мы рассмотрим PathQuad, который позволяет вам создать квадратичную кривую Безье на основе начальной и конечной точек (начальная точка является неявной) и одной контрольной точки.
Shape {
ShapePath {
strokeWidth: 3
strokeColor: "darkgray"
startX: 20; startY: 300
PathQuad {
x: 180; y: 300
controlX: 60; controlY: 250
}
}
}
Элемент PathCubic создает кубическую кривую Безье из начальной и конечной точек (начальная точка является неявной) и двух контрольных точек.
Shape {
ShapePath {
strokeWidth: 3
strokeColor: "darkgray"
startX: 220; startY: 300
PathCubic {
x: 380; y: 300
control1X: 260; control1Y: 250
control2X: 360; control2Y: 350
}
}
}
Наконец, PathCurve создает кривую, проходящую через список предоставленных контрольных точек. Кривая создается путем предоставления нескольких элементов PathCurve, каждый из которых содержит одну контрольную точку. Для создания кривой, проходящей через контрольные точки, используется сплайн Катмулла-Рома.
Shape {
ShapePath {
strokeWidth: 3
strokeColor: "darkgray"
startX: 420; startY: 300
PathCurve { x: 460; y: 220 }
PathCurve { x: 500; y: 370 }
PathCurve { x: 540; y: 270 }
PathCurve { x: 580; y: 300 }
}
}
Есть еще один полезный элемент пути – PathSvg. Этот элемент позволяет обводить и заливать путь SVG.
СОВЕТ
Элемент PathSvg не всегда можно комбинировать с другими элементами пути. Это зависит от используемого бэкэнда рисования, поэтому для одного пути используйте либо только элемент PathSvg, либо другие элементы. Если вы смешаете PathSvg с другими элементами пути, результат будет отличаться.
