【问题标题】:How To wipe the last canvas paint in qml如何在qml中擦除最后一个画布油漆
【发布时间】:2015-10-18 10:44:01
【问题描述】:
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 并在A::onClicked 上调用cavas.requestPaint(),在cavas.drawGridLineAndUnitNum 上绘制七条垂直线。如果单击按钮B,除了将chart.activeChart 设置为30,与A::onClicked 相同。我希望当A被点击时,画布擦除B的产品被点击的画线,反之亦然。但实际上,它总是保留上次的画线。

【问题讨论】:

    标签: javascript canvas qml qt5 qtquick2


    【解决方案1】:

    与特定Canvas 关联的Context2D 提供两个有用的功能:

    在大多数情况下,可以通过使用背景颜色填充Canvas,即使用fillRect 来“清除”Canvas。这就是StocQt example 的方法,它有white 背景。

    然而,如果背景是transparent,填充它会删除其他笔画,因此很有意义。在这种情况下,清除Canvas 的唯一可能方法是删除所有笔划,即使用clearRect

    我使用透明背景,因此clearRect 适合我。

    【讨论】:

    • 感谢您编辑和纠正我的回答。英语不是我的母语。我无法清楚表达我的想法,只能写一个简短的sn-p。我被你的认真感动。我会努力回报这个社区
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多