美文网首页
canvas的isPointInPath(x,y)

canvas的isPointInPath(x,y)

作者: 梧桐芊雨 | 来源:发表于2019-06-03 23:55 被阅读0次

    canvas的isPointInPath(x,y)判断某一点(x,y)是否在绘制图形之内。填充很试用哦。
    代码效果,鼠标移动位置刚好在矩形范围内,则颜色发生变化。


    Honeycam 2019-06-03 23-52-14.gif

    代码:

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="utf-8"/>
        <title>isPointInPath</title>
      </head>
      <body>
      <canvas id="ctx"></canvas>
      <script>
       var context=document.getElementById("ctx");
      var ctx= context.getContext("2d");
      var balls=[];
    
      window.onload=function(){
        context.width=600;
        context.height=600;
        context.style.border="1px solid red";
        for(var i=0;i<10;i++){
          var aball={x:Math.random()*context.width,y:Math.random()*context.height,w:Math.random()*50+20,h:Math.random()*50+20};
          balls[i]=aball;
        }
        draw();
        context.addEventListener("mousemove",detect);
      }
      function draw(){
        console.log(balls)
        for(var i=0;i<balls.length;i++){
          ctx.beginPath();
          ctx.fillStyle="#f00";
          ctx.fillRect(balls[i].x,balls[i].y,balls[i].w,balls[i].h);
        }
      }
      function detect(e){
        var x=e.clientX - context.getBoundingClientRect().left;
        var y=e.clientY-context.getBoundingClientRect().top;
          for(var i=0;i<balls.length;i++){
            ctx.beginPath();
             ctx.rect(balls[i].x,balls[i].y,balls[i].w,balls[i].h);
            if(ctx.isPointInPath(x,y)){
             ctx.fillStyle="#f0f";
             ctx.fill();
            }
          }
      }
      </script>
      </dody>
    </html>
    

    相关文章

      网友评论

          本文标题:canvas的isPointInPath(x,y)

          本文链接:https://www.haomeiwen.com/subject/yvrkxctx.html