我正在使用幻燈片預覽條帶有幻燈片放映編輯器。我正在使用電子並作出反應。我的每張幻燈片都包含用於圖像/文本的背景畫布和用於繪製的前景畫布。我的繪畫表現很好,直到我的預覽圖中有20張幻燈片,然後繪製速度變得非常緩慢。我正在繪製鼠標移動事件,以便用戶看到它跟蹤他們的光標。Html畫布繪圖放緩了太多的畫布元素
我想我已經縮小了我的問題到ctx.stroke()行,當我在預覽幻燈片上繪圖時。預覽幻燈片要小得多,但具有與用戶實際繪製的主畫布相同的分辨率。
當屏幕上> 40個畫布時,是否有任何方法可以使這個更高效?
apply(ctx, pointIndex) {
let points = this.path.getPoints().slice(pointIndex);
ctx.lineWidth = this.getLineWidth();
if(points.length === 1){
ctx.fillRect(points[0].x - (this.getLineWidth()/2), points[0].y - (this.getLineWidth()/2), this.getLineWidth(), this.getLineWidth());
return;
}
ctx.beginPath();
ctx.moveTo(Math.floor(points[0].x), Math.floor(points[0].y));
points.slice(1).forEach(function(point) {
ctx.lineTo(Math.floor(point.x), Math.floor(point.y));
});
ctx.stroke();
ctx.closePath();
ctx.lineWidth = 1;
pointIndex = this.path.getPoints().length - 1;
return pointIndex;
}
它在所有瀏覽器中的工作方式是否一樣?也許你應該將它作爲一個錯誤報告給瀏覽器的開發人員。爲什麼不重複使用同一個畫布多次,或刪除畫布,這將不會有用? –