如何擦除qml中的最后一个画布颜料

时间:2015-10-18 10:44:01

标签: javascript canvas qml qt5 qtquick2

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::onClicked,在cavas.drawGridLineAndUnitNum上绘制七条垂直线。如果点击按钮B除了设置chart.activeChart30,则全部与A::onClicked相同。我希望当点击A时,画布会擦除绘制的行,点击B的产品,反之亦然。但实际上,它总是在上次保留线条抽奖。

1 个答案:

答案 0 :(得分:2)

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

在大多数情况下,只需填写背景色,即使用fillRect,就可以“清除”white。这是StocQt example的方法,它具有transparent背景。

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

我使用透明背景,因此 public function countryLookupApiCall() { if (isset($_POST['action']) && isset($_POST['country'])) { $country = $_POST['country']; $apiKey = $this->getApiKey(); $url = $this->url . $country . '/callCharges?apiKey=' . $apiKey . '&response=JSON'; $response = wp_remote_get($url); if (is_wp_error($response)) { $error_code = $response->get_error_code(); $error_message = $response->get_error_message(); $error_data = $response->get_error_data($error_code); // Process the error here.... } echo $response; die(); } } 是我的选择。