Я пытаюсь нарисовать на холсте, используя событие перемещения мыши
Вы можете увидеть рабочую демонстрацию на этом blitzy Я вызываю эту функцию при перемещении мыши, чтобы нарисовать прямоугольник
updateDraw(e: MouseEvent) {
this.previousCoordinates = this.currentCoordinates;
this.currentCoordinates = HelloComponent.getCoordinatesOnCanvas(this.canvas.nativeElement, e);
if (this.drawingMode) {
HelloComponent.createShape(this.shapes, this.ctx, this.startCoordinates,
this.currentCoordinates, this.previousCoordinates, true);
this.endCoordinates = this.currentCoordinates;
}
}
Проблема в том, что если я слишком быстро перемещаю мышь, я получаю несколько прямоугольников (я предполагаю, что прозрачный прямоугольник не работает, поскольку движение мыши слишком быстрое), как этого избежать, должно бытьтолько 1 прямоугольник в 1 перетаскивании?
Редактировать: Я хочу иметь возможность рисовать более 1 прямоугольника, здесьЯ отслеживаю и очищаю предыдущие координаты
private static createShape(shape: Shapes, context: CanvasRenderingContext2D,
start: Coordinates, end: Coordinates, prev: Coordinates,
dotted: boolean) {
context.clearRect(start.x, start.y, (prev.x - start.x), (prev.y - start.y));