• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

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

    发布者: 雪落无声 | 发布时间: 2025-6-16 12:33| 查看数: 135| 评论数: 0|帖子模式

    使用 canvas 绘图时,指定的 div 大小一定不要超过该 div 所能获得的最大范围,否则绘制的点会跟实际位置发生偏离。
    例如
    1. <html>
    2. <head>
    3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    4. <title>Untitled 1</title>
    5. <style type="text/css">
    6. .style1 {
    7.   font-size: x-small;
    8. }
    9. </style>

    10. </head>

    11. <body >
    12.     <div style="margin:2%">
    13.             <div id="test" style="width:800px;height:800px;background-color:#cbdad0d9">
    14.                     <canvas id="container" onmousemove="mousemove(event)" onmousedown="mousedown()" onmouseup="mouseup()"></canvas>
    15.             </div>
    16.     </div>
    17.    
    18.     <script type="text/javascript">
    19.         var paint = false;
    20.         var start = false;
    21.         var canvas = document.getElementById("container");
    22.         canvas.width = 800;
    23.         canvas.height = 800;
    24.         var offsetY = canvas.offsetTop;
    25.         var offsetX = canvas.offsetLeft;
    26.         var y;
    27.         var x;
    28.         var context = canvas.getContext("2d");
    29.    
    30.         function mousemove(e) {
    31.             if (paint == true){
    32.                 if (start == false){
    33.                     context.moveTo(0, 0);
    34.                     start = true;
    35.                 } else {
    36.                     context.moveTo(x, y);
    37.                 }

    38.                 x = e.pageX - offsetX;
    39.                 y = e.pageY - offsetY;
    40.                 context.lineTo(x, y);
    41.                 context.stroke();
    42.             }
    43.         }
    44.    
    45.         function mousedown(event) {
    46.             paint = true;
    47.             console.log("down")
    48.         }
    49.    
    50.         function mouseup(event) {
    51.             paint = false;
    52.             console.log("up")
    53.         }
    54.    
    55.     </script>
    56. </body>
    57. </html>
    复制代码
    上例中可以正确的绘制线图。
    如果更改为:
    1.     <div style="margin:20%">
    2.             <div id="test" style="width:800px;height:800px;background-color:#cbdad0d9">
    3.                     <canvas id="container" onmousemove="mousemove(event)" onmousedown="mousedown()" onmouseup="mouseup()"></canvas>
    4.             </div>
    5.     </div>
    复制代码
    由于 canvas 所需 width 800px 无法满足,因此绘制线图时,与实际鼠标位置发生偏离。
    到此这篇关于canvas 绘图时位置偏离的问题解决的文章就介绍到这了,更多相关canvas 绘图位置偏离内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/html5/745325.html
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表