每次移动 canvas 的一部分并将其作为图像绘制在另一个 canvas 上
Take a part of canvas and draw it as image on another canvas at every move
我有一个 canvas 并在其上设置了鼠标移动事件,我需要绘制 canvas 的一部分,用户在另一个 canvas 上移动。
public drawImage(pointerPoint: { x: number, y: number }, panelCanvas: JQuery): void {
let canvasImage = new Image(),
context = this.context();
canvasImage.onload = () => {
context.clearRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
context.drawImage(canvasImage, pointerPoint.x - 50, pointerPoint.y - 50, CANVAS_WIDTH, CANVAS_HEIGHT, 0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
};
canvasImage.src = (<HTMLCanvasElement>(panelCanvas[0])).toDataURL();
}
但问题是此方法调用频繁,它会获取数据 url 很多 canvas 然后等待 onload,这会导致 canvas 慢有什么办法做得更快?
drawImage 将绘制类似元素的图像。 canvas 是这样的图像,无需转换为数据 url 只需将一个 canvas 绘制到另一个上即可。EG
public drawImage(pointerPoint: { x: number, y: number }, panelCanvas: JQuery): void {
const context = this.context();
context.clearRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
context.drawImage(
panelCanvas[0],
pointerPoint.x - 50, pointerPoint.y - 50, CANVAS_WIDTH, CANVAS_HEIGHT,
0, 0, CANVAS_WIDTH, CANVAS_HEIGHT
);
}
我有一个 canvas 并在其上设置了鼠标移动事件,我需要绘制 canvas 的一部分,用户在另一个 canvas 上移动。
public drawImage(pointerPoint: { x: number, y: number }, panelCanvas: JQuery): void {
let canvasImage = new Image(),
context = this.context();
canvasImage.onload = () => {
context.clearRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
context.drawImage(canvasImage, pointerPoint.x - 50, pointerPoint.y - 50, CANVAS_WIDTH, CANVAS_HEIGHT, 0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
};
canvasImage.src = (<HTMLCanvasElement>(panelCanvas[0])).toDataURL();
}
但问题是此方法调用频繁,它会获取数据 url 很多 canvas 然后等待 onload,这会导致 canvas 慢有什么办法做得更快?
drawImage 将绘制类似元素的图像。 canvas 是这样的图像,无需转换为数据 url 只需将一个 canvas 绘制到另一个上即可。EG
public drawImage(pointerPoint: { x: number, y: number }, panelCanvas: JQuery): void {
const context = this.context();
context.clearRect(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT);
context.drawImage(
panelCanvas[0],
pointerPoint.x - 50, pointerPoint.y - 50, CANVAS_WIDTH, CANVAS_HEIGHT,
0, 0, CANVAS_WIDTH, CANVAS_HEIGHT
);
}