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.activeChart
设置为 30
之外,都与 A::onClicked
相同。我希望当点击A
时,画布擦除绘制的线,点击B
的产品,反之亦然。但实际上,它总是保留上次画线。
与特定Canvas
相关联的Context2D
提供了两个有用的函数:
-
fillRect
-
clearRect
在大多数情况下,只需用背景颜色填充Canvas
即可"清除"fillRect
。这就是StocQt示例的方法,它具有white
背景。
但是,如果背景是transparent
,则填充它不会删除其他笔触,因此没有多大意义。在这种情况下,清除Canvas
的唯一可能方法是删除所有笔画,即使用 clearRect
.
我使用透明背景,因此clearRect
是我的必经之路。