如何在 qml 中擦除最后一个画布油漆


Canvas {
    id: canvas
    onPaint: {
        if (personalInfo.count === 0) {
            return
        }
        var ctx = canvas.getContext("2d");
        ctx.globalCompositeOperation = "source-over";
        var points = []
        for (var i = 0; i < personalInfoModel.dataCount(); i++) {
            var temp = personalInfoModel.get(i)
            points.push({
                            date: temp.date,
                            heartRate: temp.heartRate,
                            temprature: temp.temprature,
                            pressure: temp.bloodPressure
                        }
                        )
        }
        drawAxis(ctx)
        drawGridLineAndUnitNum(ctx, chart.activeChart, points, "x", 15); 
    }
}

我有两个按钮。如果点击按钮A,则chart.activeChart设置为7并调用cavas.requestPaint() A::onClickedcavas.drawGridLineAndUnitNum画七条垂直线。如果单击按钮 B 除了将chart.activeChart设置为 30 之外,都与 A::onClicked 相同。我希望当点击A时,画布擦除绘制的线,点击B的产品,反之亦然。但实际上,它总是保留上次画线。

与特定Canvas相关联的Context2D提供了两个有用的函数:

  • fillRect
  • clearRect

在大多数情况下,只需用背景颜色填充Canvas即可"清除"fillRect。这就是StocQt示例的方法,它具有white背景。

但是,如果背景是transparent,则填充它不会删除其他笔触,因此没有多大意义。在这种情况下,清除Canvas的唯一可能方法是删除所有笔画,即使用 clearRect .

我使用透明背景,因此clearRect是我的必经之路。

相关内容

  • 没有找到相关文章

最新更新