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 相关文章推荐
CSS实现定位元素居中的方法
Jun 23 HTML / CSS
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
Mar 02 HTML / CSS
涂鸦板简单实现 Html5编写属于自己的画画板
Jul 05 HTML / CSS
HTML5 CSS3新的WEB标准和浏览器支持
Jul 16 HTML / CSS
html5设计原理(推荐收藏)
May 17 HTML / CSS
canvas实现二维码和图片合成的示例代码
Aug 01 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
Apr 07 HTML / CSS
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
Apr 27 HTML / CSS
基于CSS3画一个iPhone
Apr 21 HTML / CSS
HTML常用标签超详细整理
Mar 19 HTML / CSS
详解flex:1什么意思
Jul 23 HTML / CSS
CSS浮动引起的高度塌陷问题
Aug 05 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
php 向访客和爬虫显示不同的内容
2009/11/09 PHP
PHP学习之数组的定义和填充
2011/04/17 PHP
JavaScript 事件的一些重要说明
2009/10/25 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
让JavaScript和其它资源并发下载的方法
2014/10/16 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
JS严格模式知识点总结
2018/02/27 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
Django接受前端数据的几种方法总结
2016/11/04 Python
python set集合使用方法解析
2019/11/05 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
解决Jupyter因卸载重装导致的问题修复
2020/04/10 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
学校介绍信范文
2014/01/14 职场文书
会计与审计专业自荐信范文
2014/03/15 职场文书
合作协议书
2014/04/23 职场文书
优秀家长自荐材料
2014/08/26 职场文书
签证工作证明模板
2015/06/15 职场文书
教师节班会主持词
2015/07/06 职场文书
Java中的继承、多态以及封装
2022/04/11 Java/Android