Bạn sử dụng context.clearRect(), nhưng trước tiên bạn phải tìm hình chữ nhật để xóa. Điều này dựa trên một số yếu tố, chẳng hạn như kích thước của văn bản và thuộc tính textAlign của bối cảnh canvas khi văn bản ban đầu được vẽ. Đoạn mã dưới đây sẽ cho phương thức vẽ của đối tượng vẽ văn bản vào ngữ cảnh canvas, vì vậy nó có các thuộc tính cho x, y, cỡ chữ, căn chỉnh ngang vv Lưu ý rằng chúng tôi luôn lưu trữ đoạn văn bản cuối cùng được vẽ để chúng tôi có thể xóa hình chữ nhật có kích thước thích hợp khi giá trị được thay đổi tiếp theo.
this.draw = function() {
var metrics = this.ctx.measureText(this.lastValue),
rect = {
x: 0,
y: this.y - this.textSize/2,
width: metrics.width,
height: this.textSize,
};
switch(this.hAlign) {
case 'center':
rect.x = this.x - metrics.width/2;
break;
case 'left':
rect.x = this.x;
break;
case 'right':
rect.x = this.x - metrics.width;
break;
}
this.ctx.clearRect(rect.x, rect.y, rect.width, rect.height);
this.ctx.font = this.weight + ' ' + this.textSize + ' ' + this.font;
this.ctx.textAlign = this.hAlign;
this.ctx.fillText(this.value, this.x, this.y);
this.lastValue = this.value;
}
Nguồn
2013-02-16 03:16:58
Cảm ơn u Tôi tin rằng đây là cách tiếp cận chính xác để loại bỏ một số nhu cầu liên tục xóa và vẽ lại. Thông tin thêm tại đây: https://stackoverflow.com/questions/3008635/html5-canvas-element-multiple-layers – Andrew