我在onmousemove
函数体上使用此脚本:
function lineDraw() {
// Get the context and the canvas:
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
// Clear the last canvas
context.clearRect(0, 0, canvas.width, canvas.height);
// Draw the line:
context.moveTo(0, 0);
context.lineTo(event.clientX, event.clientY);
context.stroke();
}
它应该在我每次移动鼠标时清空画布,然后画一条新的线,但是它不能正常工作。我试图不使用jQuery、鼠标侦听器或类似的工具来解决这个问题。
下面是一个演示:https://jsfiddle.net/0y4wf31k/
5条答案
按热度按时间pwuypxnk1#
您应该使用“beginPath()"。就是这样。
q5lcpyga2#
请注意ctx.clearRect()不能在Google Chrome上正常工作。我花了几个小时试图解决一个相关的问题,却发现在Chrome上,它实际上用rgba(0,0,0,0)填充矩形,而不是用rgba(0,0,0,1)填充矩形!
因此,为了用所需的透明黑色像素 * 正确地 * 填充矩形,您需要在Chrome上执行以下操作:
当然,这应该适用于所有为HTML5 Canvas对象提供适当支持的浏览器。
goucqfw63#
我们需要用到beginPath()和stroke(),这段代码和clearRect(...)的工作原理一样。
zpqajqem4#
如果你用这种方法得到一个黑屏
然后将rgba中的所有0切换到255
qni6mghb5#
尝试使用
context.canvas.width = context.canvas.width
:演示HERE