javascript - 用鼠标在 Canvas 上绘制固定边的多边形

标签 javascript html css canvas html5-canvas

我正在尝试使用鼠标单击和移动事件在 Canvas 上绘制多边形(比如说 4 边)。

  1. 在 Canvas 上单击 moveTo(这一点)。
  2. 现在将光标移动 lineTo(当前点)但不是中间点。线条应随 mousemove 保持移动,并且应仅在单击后绘制到 Canvas 上。
  3. 第四次点击(或任何 x 次)后,多边形应该关​​闭路径();

    var pressed = false;

    function myfunc1(e){
        context.beginPath();
        context.arc(e.clientX, e.clientY, radius, 0, Math.PI*2);
        context.fill();
        context.beginPath();
        context.moveTo(e.clientX,e.clientY);
        pressed = true; 
    }
    
    function myfunc2(e){    
        if(pressed ===true){    
        context.lineTo(e.clientX,e.clientY);
        context.stroke();    
        }
    }    
    canvas.addEventListener('click',myfunc1);
    canvas.addEventListener('mousemove',myfunc2);
    

我写了这个,但是我不想要中间的行

最佳答案

你需要的是一个堆栈。不要想着画线。考虑将所有点击点存储在一个数组中。单击 4 次后,绘制多边形(假设这就是您想要的)。像这样:

var stack = [];

myfunc1(e){

    stack.push(e.clientX, e.clientY);

    if(stack.length == 4)
        actuallyDraw();
}

var actuallyDraw(){
    //take the 4 points in stack and draw the polygon

    //clearing the stack for the next polygon
    stack.length = 0; 
}

canvas.addEventListener('click', myfunc1);

关于javascript - 用鼠标在 Canvas 上绘制固定边的多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32709763/

相关文章:

html - block 级元素的水平格式

javascript - 生成不会改变的虚假数据

javascript - 响应式 html 在 iframe 元素上捕获滑动手势

javascript - 中间显示 "x"的神秘非常小的矩形框,但无法位于 DOM 上的任何位置

html - 在保持宽高比的同时缩放视频以适应 flexbox 元素

css - SharePoint 内容编辑器未正确显示页面

javascript - jQuery $.each 方法中的 ES6 模板文字

javascript - 将外部文件追加到头部

javascript - 隐藏密码文本框并提交

javascript - 如何在点击jquery时平滑滚动