Javascript画布-绘制矩形拖放

Javascript画布-绘制矩形拖放,javascript,html,canvas,html5-canvas,rectangles,Javascript,Html,Canvas,Html5 Canvas,Rectangles,我希望能够单击并拖动在javascript画布上绘制一个矩形 我需要能够看到矩形,因为我拖动改变大小,就像我听说的橡皮筋一样拖动。然后在鼠标上创建 我在这方面遇到了严重的困难,非常感谢您的帮助,谢谢 首先,要在拖动或鼠标移动时绘制矩形,只需清除画布,然后绘制一个新的矩形。第二,画布形状不是对象,所以你不能与他们互动,据我所知,如果你想互动,考虑使用SVG。这是一个拖拉绘图的草率实现 $("canvas").mousedown(function(event){ var ctx = th

我希望能够单击并拖动在javascript画布上绘制一个矩形

我需要能够看到矩形,因为我拖动改变大小,就像我听说的橡皮筋一样拖动。然后在鼠标上创建


我在这方面遇到了严重的困难,非常感谢您的帮助,谢谢

首先,要在拖动或鼠标移动时绘制矩形,只需清除画布,然后绘制一个新的矩形。第二,画布形状不是对象,所以你不能与他们互动,据我所知,如果你想互动,考虑使用SVG。这是一个拖拉绘图的草率实现

 $("canvas").mousedown(function(event){
     var ctx = this.getContext("2d");
     ctx.clearRect(0,0,$(this).width(),$(this).height());
     var initialX = event.clientX - this.getBoundingClientRect().left;
     var initialY = event.clientY - this.getBoundingClientRect().top;

     $(this).mousemove(function(evt) {
         ctx.strokeRect(initialX, initialY, evt.clientX - event.clientX, evt.clientY - event.clientY);
     });
 });

首先,要在拖动或鼠标移动时绘制矩形,只需清除画布,然后绘制一个新的矩形。第二,画布形状不是对象,所以你不能与他们互动,据我所知,如果你想互动,考虑使用SVG。这是一个拖拉绘图的草率实现

 $("canvas").mousedown(function(event){
     var ctx = this.getContext("2d");
     ctx.clearRect(0,0,$(this).width(),$(this).height());
     var initialX = event.clientX - this.getBoundingClientRect().left;
     var initialY = event.clientY - this.getBoundingClientRect().top;

     $(this).mousemove(function(evt) {
         ctx.strokeRect(initialX, initialY, evt.clientX - event.clientX, evt.clientY - event.clientY);
     });
 });

要研究的算法是

使用动画帧回调清除画布上的新矩形并将其写入画布。看

在画布上使用mousedown和mouseup事件启动跟踪鼠标移动。mousedown事件可以启动动画调用以绘制1x1像素的矩形

mousemove事件记录鼠标位置,供动画帧绘制代码使用,如果没有挂起回调,则可能调用requestAnimationFrame

如果可以清除画布上以前的内容以创建橡皮筋效果,则结果是鼠标上最后绘制的矩形

如果需要保留现有内容,请研究在mousedown上复制画布,并在绘制新矩形之前将其复制回画布。请参阅和/或


快乐编码,有很多东西要学

需要研究的算法是

使用动画帧回调清除画布上的新矩形并将其写入画布。看

在画布上使用mousedown和mouseup事件启动跟踪鼠标移动。mousedown事件可以启动动画调用以绘制1x1像素的矩形

mousemove事件记录鼠标位置,供动画帧绘制代码使用,如果没有挂起回调,则可能调用requestAnimationFrame

如果可以清除画布上以前的内容以创建橡皮筋效果,则结果是鼠标上最后绘制的矩形

如果需要保留现有内容,请研究在mousedown上复制画布,并在绘制新矩形之前将其复制回画布。请参阅和/或


快乐编码,有很多东西要学

您还应该删除事件侦听器,如果不是在20个矩形之后,它将绘制相同的矩形20次:p您还应该删除事件侦听器,如果不是在20个矩形之后,它将绘制相同的矩形20次:p