Построение путей

Добавлено 12 мая 2022 в 09:20

Как мы видели в предыдущем разделе, фигуры строятся из путей, которые строятся из элементов путей. Самый распространенный способ построить путь – замкнуть его, т. е. обеспечить, чтобы он начинался и заканчивался в одной и той же точке. Однако можно создавать и открытые пути, например, только для обводки. При заливке открытого пути путь закрывается прямой линией, просто добавляя PathLine, который используется при заливке пути, но не при его обводке.

Как показано на рисунке ниже, есть несколько базовых фигур, которые можно использовать для построения пути. Это: линии, дуги и различные кривые. Также можно перемещаться без рисования с помощью элемента PathMove. В дополнение к этим элементам элемент ShapePath также позволяет указать начальную точку с помощью свойств startX и startY.

Базовые фигуры и элементы QML
Базовые фигуры и элементы QML

Линии рисуются с использованием элемента 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 с другими элементами пути, результат будет отличаться.

Теги

GUI / Графический интерфейс пользователяQMLQtQt Quick ShapesQtQuickПрограммирование

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.