【发布时间】:2017-07-14 20:29:26
【问题描述】:
我正在寻找一种在画布上“实时”绘制矩形或圆形的方法。
我用fillRect() 找到了各种方法来绘制矩形,但不是实时的。我的意思是,能够在一个点上mouseDown() 并将其移动到画布中的另一个点,这定义了画布的大小,就像在 Microsoft Paint、OneNote 等中一样。
任何人都可以帮助我并就如何开始给我一些建议吗?我可能正在考虑如何做到这一点,而不会看到矩形(或圆形)大小发生变化,例如:
$("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);
});
});
但我想实时看到它,所以当用户移动鼠标时矩形大小如何变化。
【问题讨论】:
-
使用
window.requestAnimationFrame()经常刷新画布 -
@randnum-1 和?您的意思是在
setInterval()中每 50 毫秒或类似的时间重绘一次画布,直到mouseUp? -
我假设你想要这样的东西 jsfiddle.net/jk607fqn/3 点击画布绘制红色方块
-
补充一点,如果你想要更复杂的东西,最好按照 randnum-1 的建议做,并收集帧之间的事件数据,然后有一个间隔调用的“渲染”例程.另一方面,如果你想要的只是一个一次性的页面效果,你可以不使用事件。我现在更新了上面的内容来处理一些基本的点击和拖动:jsfiddle.net/b8rq8u4f/1
标签: javascript html canvas rectangles