簡體   English   中英

如何在QML中擦拭最后的畫布油漆

[英]How To wipe the last canvas paint in 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並在A::onClicked上調用cavas.requestPaint() ,在cavas.drawGridLineAndUnitNum繪制七個垂直線。 如果除了將chart.activeChart設置為30之外,還單擊按鈕B ,則都將A::onClicked都設置為相同。 我希望單擊A時,畫布會擦除單擊B所乘積的畫線,反之亦然。 但實際上,它總是保留上次繪制的線條。

與特定的Canvas關聯的Context2D提供了兩個有用的功能:

在大多數情況下,可以簡單地通過用背景色填充Canvas來“清除” Canvas ,即使用fillRect 這就是StocQt示例的方法,該示例具有white背景。

然而,如果背景是transparent ,填充它不會刪除其它筆划,因此並沒有太大的意義。 在這種情況下,清除Canvas的唯一可能方法是刪除所有筆觸,即使用clearRect

我使用透明背景,因此clearRect是適合我的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM