• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    canvas 绘图时位置偏离的问题解决

    使用 canvas 绘图时,指定的 div 大小一定不要超过该 div 所能获得的最大范围,否则绘制的点会跟实际位置发生偏离。

    例如

    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Untitled 1</title> 
    <style type="text/css"> 
    .style1 { 
      font-size: x-small; 
    } 
    </style> 
    
    </head> 
     
    <body > 
        <div style="margin:2%">
                <div id="test" style="width:800px;height:800px;background-color:#cbdad0d9">
                        <canvas id="container" onmousemove="mousemove(event)" onmousedown="mousedown()" onmouseup="mouseup()"></canvas>
                </div>
        </div>
        
        <script type="text/javascript"> 
            var paint = false;
            var start = false;
            var canvas = document.getElementById("container");
            canvas.width = 800;
            canvas.height = 800;
            var offsetY = canvas.offsetTop;
            var offsetX = canvas.offsetLeft;
            var y;
            var x;
            var context = canvas.getContext("2d");
        
            function mousemove(e) {
                if (paint == true){
                    if (start == false){
                        context.moveTo(0, 0);
                        start = true;
                    } else {
                        context.moveTo(x, y);
                    }
    
                    x = e.pageX - offsetX;
                    y = e.pageY - offsetY;
                    context.lineTo(x, y);
                    context.stroke();
                }
            }
        
            function mousedown(event) {
                paint = true;
                console.log("down")
            }
        
            function mouseup(event) {
                paint = false;
                console.log("up")
            }
        
        </script>
    </body> 
    </html>

    上例中可以正确的绘制线图。

    如果更改为:

        <div style="margin:20%">
                <div id="test" style="width:800px;height:800px;background-color:#cbdad0d9">
                        <canvas id="container" onmousemove="mousemove(event)" onmousedown="mousedown()" onmouseup="mouseup()"></canvas>
                </div>
        </div>
    

    由于 canvas 所需 width 800px 无法满足,因此绘制线图时,与实际鼠标位置发生偏离。

    到此这篇关于canvas 绘图时位置偏离的问题解决的文章就介绍到这了,更多相关canvas 绘图位置偏离内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

    上一篇:关于canvas.toDataURL 在iOS运行失败的问题解决
    下一篇:如何在Canvas上的图形/图像绑定事件监听的实现
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    canvas 绘图时位置偏离的问题解决 canvas,绘图,时,位置,偏离,