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 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
Jun 06 HTML / CSS
非常漂亮的CSS3百叶窗焦点图动画
Feb 24 HTML / CSS
CSS3制作彩色进度条样式的代码示例分享
Jun 23 HTML / CSS
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
Jan 23 HTML / CSS
详解CSS3实现响应式手风琴效果
Jun 10 HTML / CSS
CSS3 box-shadow属性实例详解
Jun 19 HTML / CSS
程序设计HTML5 Canvas API
Apr 08 HTML / CSS
基于HTML5+Webkit实现树叶飘落动画
Dec 28 HTML / CSS
html5视频媒体标签video的使用方法及完整参数说明详解
Sep 27 HTML / CSS
html5默认气泡修改的代码详解
Mar 13 HTML / CSS
html2canvas截图空白问题的解决
Mar 24 HTML / CSS
CSS3常见动画的实现方式
Apr 14 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和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
2012/02/16 Javascript
javascript动态加载二
2012/08/22 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
浅析Node.js的Stream模块中的Readable对象
2015/07/29 Javascript
JavaScript模拟鼠标右键菜单效果
2020/12/08 Javascript
JavaScript图片处理与合成总结
2018/03/04 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
Python描述器descriptor详解
2015/02/03 Python
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
解决python线程卡死的问题
2019/02/18 Python
python实现简单图书管理系统
2019/11/22 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
python如何构建mock接口服务
2021/01/28 Python
Lee牛仔裤澳大利亚官网:美国著名牛仔裤品牌
2017/09/02 全球购物
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
node中使用shell脚本的方法步骤
2021/03/23 Javascript
妇产科护士自我鉴定
2013/10/15 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
电信营业员岗位职责
2015/04/14 职场文书
团委副书记工作总结
2015/08/14 职场文书
详解NodeJS模块化
2021/06/15 NodeJs
python 镜像环境搭建总结
2022/09/23 Python