js 图片拖动会有图像遗留问题

在一个盒子中拖拽图片和缩放,在图片移动的矩形上会有图像遗留是什么原因,怎么解决?

没有拖动之前的样子:
image.png

向右拖动图片后为什么出现画面遗留
image.png

代码:

// 为画布上鼠标的拖拽注册事件
canvasDragEventsInit() {
  console.log("图片拖动");
  let _this = this;
  let canvas = _this.myCanvas;

  canvas.onmousedown = function(event) {
    event.preventDefault();
    event.stopPropagation();
    let imgx = _this.imgX;
    let imgy = _this.imgY;
    let pos = { x: event.clientX, y: event.clientY }; // 坐标转换,将窗口坐标转换成canvas的坐标
    canvas.onmousemove = function(evt) {
      evt.preventDefault();
      evt.stopPropagation();
      // 移动
      canvas.style.cursor = "move";

      let x = (evt.clientX - pos.x) * 2 + imgx;
      let y = (evt.clientY - pos.y) * 2 + imgy;
      _this.imgX = x;
      _this.imgY = y;

      _this.drawImage(_this.imgObject); // 重新绘制图片
    };
    canvas.onmouseup = function() {
      canvas.onmousemove = null;
      canvas.onmouseup = null;
      canvas.style.cursor = "default";
    };
  };
},
阅读 1.6k
1 个回答

使用clearRect先清除之前的内容,再绘制,或者用fillRect填充一个背景色

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题