Возможно ли в qml перерисовать содержимое объекта Canvas?

Более чистый способ рассмотрения одного или нескольких детей

<div>
   { React.Children.map(this.props.children, child => React.cloneElement(child, {...this.props}))}
</div>
0
задан eyllanesc 13 July 2018 в 23:42
поделиться

1 ответ

В общем случае вы можете создать свойство null и использовать сигнал, который выдается, когда есть изменение для вызова requestPaint(), а в onPaint() вы рисуете круг, который эмулирует точку.

import QtQuick 2.0
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.2

ApplicationWindow {
    visible: true
    width: 640
    height: 480

    property var drawPoint: null
    onDrawPointChanged: canv.requestPaint()

    ColumnLayout {
        anchors.fill: parent
        anchors.margins: 9

        Button {
            height: 40
            Layout.fillWidth: true
            text: qsTr("Random Point")
            onClicked: drawPoint = Qt.point(Math.random()*canv.width ,Math.random()*canv.height);
        }

        Canvas {
            id: canv
            Layout.fillWidth: true
            Layout.fillHeight: true
            onPaint: {
                var ctx = getContext("2d");
                ctx.fillStyle = Qt.rgba(1, 1, 1, 1);
                ctx.fillRect(0, 0, width, height);

                if(drawPoint !== null){
                    ctx.beginPath();
                    ctx.arc(drawPoint.x, drawPoint.y, 5, 0, 2 * Math.PI);
                    ctx.fillStyle = Qt.rgba(1, 0, 0, 1);
                    ctx.fill()
                    ctx.strokeStyle = Qt.rgba(1, 0, 0, 1);
                    ctx.stroke();
                }
            }
        }
    }
}
0
ответ дан eyllanesc 17 August 2018 в 12:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: