canvas画图被放大且模糊的解决方法


Posted in HTML / CSS onAugust 11, 2020

先来理解canvas的这几个宽度和高度

canvas.width是画布的大小,而canvas.style.width是浏览器渲染的canvas的尺寸

第一个问题:画布的高度和宽度

画布的宽和高一定要在canvas标签中设置,如果是在css样式中设置,则不起作用,画布会按照默认尺寸width:300px,height:150px显示

//在标签中设置宽和高
<canvas id="canvas" width="324" height="622" >

除了直接在canvas标签设置,还可以在绘制的时候设置,注意画布的宽高不需要单位

canvas.width = 324;
canvas.height = 622;

第二个问题:绘制的图形被放大,图像模糊

这是由于手机的设备独立像素和物理像素不一致,设备像素比=物理像素/设备独立像素,大部分手机的设备像素比为2,这意味着100px的图像要放在200px中才可以正常显示

用devicePixelRatio可以获取到设备像素比,获取到像素比后,我们就可以控制图形的缩放比例

scale = window.devicePixelRatio;

刚刚说了,canvas.style.width是浏览器渲染的canvas的尺寸,那要想你画的图形正确且清楚的显示在画布中,你需要设置正确的style.width和style.height,如下图,注意加上单位。

canvas.style.width = canvas.width / scale + 'px';
canvas.style.height= canvas.height/ scale + 'px';

上面我们设置了画布的宽度为324,如果不设置style.width,则画的图形会被放大到2倍显示。

到此这篇关于canvas画图被放大且模糊的解决方法的文章就介绍到这了,更多相关canvas图被放大且模糊内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木! 

HTML / CSS 相关文章推荐
CSS3新属性transition-property transform box-shadow实例学习
Jun 06 HTML / CSS
CSS3实现多背景展示效果通过CSS3定位多张背景
Aug 10 HTML / CSS
利用纯css3实现的文字亮光特效的代码演示
Nov 27 HTML / CSS
CSS3 对过渡(transition)进行调速以及延时
Oct 21 HTML / CSS
全面解析HTML5中的标准属性与自定义属性
Feb 18 HTML / CSS
详解HTML5 window.postMessage与跨域
May 11 HTML / CSS
使用html5实现表格实现标题合并的实例代码
May 13 HTML / CSS
HTML5中外部浏览器唤起微信分享
Jan 02 HTML / CSS
使用canvas压缩图片上传的方法示例
Feb 07 HTML / CSS
html5实现滑块功能之type=&quot;range&quot;属性
Feb 18 HTML / CSS
Html5页面播放M4a音频文件
Mar 30 HTML / CSS
分享几个实用的CSS代码块
Jun 10 HTML / CSS
在html页面中取得session中的值的方法
Aug 11 #HTML / CSS
canvas实现滑动验证的实现示例
Aug 11 #HTML / CSS
解决html5中的video标签ios系统中无法播放使用的问题
Aug 10 #HTML / CSS
Html5 webview元素定位工具的实现
Aug 07 #HTML / CSS
HTML5 video循环播放多个视频的方法步骤
Aug 06 #HTML / CSS
html5 video全屏播放/自动播放的实现示例
Aug 06 #HTML / CSS
HTML5 通过Vedio标签实现视频循环播放的示例代码
Aug 05 #HTML / CSS
You might like
生成卡号php代码
2008/04/09 PHP
一篇有意思的技术文章php介绍篇
2010/10/26 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
javascript &amp;&amp;和||运算法的另类使用技巧
2009/11/28 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
2015/09/05 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
JavaScript判断日期时间差的实例代码
2018/03/01 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
浅谈vue限制文本框输入数字的正确姿势
2019/09/02 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
python压包的概念及实例详解
2021/02/17 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
查找廉价航班和发现新目的地:Kiwi.com
2019/02/25 全球购物
什么是命名空间(NameSpace)
2015/11/24 面试题
求职者简历中的自我评价
2013/10/20 职场文书
广告学专业推荐信范文
2013/11/23 职场文书
专升本个人自我评价
2013/12/22 职场文书
优秀班干部事迹材料
2014/01/26 职场文书
中介公司区域经理岗位职责范本
2014/03/02 职场文书
2015年计算机教学工作总结
2015/07/22 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书