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


Posted in HTML / CSS onSeptember 16, 2020

使用 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 绘图位置偏离内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

HTML / CSS 相关文章推荐
CSS3制作缩略图的详细过程
Jul 08 HTML / CSS
CSS3实现各种图形的示例代码
Oct 19 HTML / CSS
利用简洁的图片预加载组件提升html5移动页面的用户体验
Mar 11 HTML / CSS
HTML5的结构和语义(1):前言
Oct 17 HTML / CSS
HTML5的革新 结构之美
Jun 20 HTML / CSS
HTML5的语法变化介绍
Aug 13 HTML / CSS
HTML5中的Scoped属性使用实例
Apr 23 HTML / CSS
推荐WEB开发者最佳HTML5和CSS3代码生成器
Nov 24 HTML / CSS
Html5插件教程之添加浏览器放大镜效果的商品橱窗
Jan 07 HTML / CSS
浅谈HTML5 &amp; CSS3的新交互特性
Jul 19 HTML / CSS
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
Jul 24 HTML / CSS
移动端html5判断是否滚动到底部并且下拉加载
Nov 19 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
Sep 16 #HTML / CSS
canvas绘制图片drawImage使用方法
Sep 15 #HTML / CSS
HTML5中外部浏览器唤起微信分享功能的代码
Sep 15 #HTML / CSS
浅析HTML5 Landmark
Sep 11 #HTML / CSS
详解HTML5中CSS外观属性
Sep 10 #HTML / CSS
详解如何在登录过期后跳出Ifram框架
Sep 10 #HTML / CSS
HTML5中input输入框默认提示文字向左向右移动的示例代码
Sep 10 #HTML / CSS
You might like
VIM中设置php自动缩进为4个空格的方法详解
2013/06/14 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
2019/10/10 PHP
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
Node 代理访问的实现
2019/09/19 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
Python学习资料
2007/02/08 Python
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
python爬取微信公众号文章的方法
2019/02/26 Python
pymongo中group by的操作方法教程
2019/03/22 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
Django异步任务线程池实现原理
2019/12/17 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
业务主管岗位职责范本
2013/12/25 职场文书
给物业的表扬信
2014/01/21 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
合作经营协议书范本
2014/09/16 职场文书
北京天坛导游词
2015/02/12 职场文书
拖欠货款起诉状
2015/05/20 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
python办公自动化之excel的操作
2021/05/23 Python
Elasticsearch 基本查询和组合查询
2022/04/19 Python
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android