Как получить точные нарисованные пиксели на QML Canvas?Какой объект Qt мне следует расширить? - PullRequest
0 голосов
/ 27 января 2019

Я разрабатываю программу, в которой пользователь комментирует некоторые пиксели на изображении, и я запустю алгоритм обработки изображений на основе отмеченных пикселей.

Example

Я хочучтобы получить координаты аннотированных пикселей и к какой группе они принадлежат (синий, желтый или любой другой цветной маркер, добавленный пользователем), он должен быть устойчивым для масштабирования (масштабирования) изображения и иметь возможность удалять выбранный маркер (что-то, что QML Canvas не разрешает).

Я разрабатывал его с QGraphicsView из QtWidgets, но в итоге я перезапустил приложение с QML, потому что мобильная версия была бы хороша, но я неуверен, что это был хороший выбор.

В настоящее время у меня есть это (упрощенная версия)

Item {
    id: main_area
    // ...

    Image {
        id: image
        anchors.fill: parent
        // ...
    }

    Canvas { // I think this needs to be replaced with my c++ class
        id: scribble_area
        anchors.fill: image

        property real last_x
        property real last_y
        onPaint: {
            var ctx = getContext("2d")
            ctx.lineCap = "round"
            ctx.lineWidth = 10
            ctx.strokeStyle = color_tools.paintColor // it's in another file
            ctx.beginPath()
            ctx.moveTo(last_x, last_y)
            last_x = area.mouseX
            last_y = area.mouseY
            ctx.lineTo(last_x, last_y)
            ctx.stroke()
        }

        MouseArea {
            id: area
            anchors.fill: parent
            acceptedButtons: Qt.LeftButton
            onPressed: {
                scribble_area.last_x = mouseX
                scribble_area.last_y = mouseY
            }
            onPositionChanged: scribble_area.requestPaint()
        }
    }
}

Я не уверен, что наложение id: image на id: scribble_area являетсяправильный способ делать то, что я хочу, с QGraphicsView все присутствовало в одном и том же классе.

Какой класс Qt мне следует использовать из QtQuick для получения результатов, подобных QGraphicsView?

Любые рекомендацииПриветствую структуру моих предметов QML / Qt.

...