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教程:边框属性border的极致应用
Apr 02 HTML / CSS
css3的transition效果和transfor效果示例介绍
Oct 30 HTML / CSS
一款纯css3实现简单的checkbox复选框和radio单选框
Nov 05 HTML / CSS
用CSS3写的模仿iPhone中的返回按钮
Apr 04 HTML / CSS
使用CSS3设计地图上的雷达定位提示效果
Apr 05 HTML / CSS
基于IE10/HTML5 开发
Apr 22 HTML / CSS
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
Jan 20 HTML / CSS
详解前端HTML5几种存储方式的总结
Dec 27 HTML / CSS
Html5 canvas实现粒子时钟的示例代码
Sep 06 HTML / CSS
localStorage的过期时间设置的方法详解
Nov 26 HTML / CSS
html5唤醒APP小记
Mar 27 HTML / CSS
css清除浮动clearfix:after的用法详解(附完整代码)
May 21 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扩展函数
2006/10/09 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
浅谈php命令行用法
2015/02/04 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
php生成无限栏目树
2017/03/16 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
超简单的jquery的AJAX用法
2010/05/10 Javascript
JavaScript模板入门介绍
2012/09/26 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
浅谈javascript面向对象程序设计
2015/01/21 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
不用一句js代码初始化组件
2016/01/27 Javascript
vue.js表格分页示例
2016/10/18 Javascript
Bootstrap CSS布局之列表
2016/12/15 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
在Python的Django框架中包装视图函数
2015/07/20 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
世界上最好的帽子:Tilley
2016/11/27 全球购物
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
银河香水:Galaxy Perfume
2019/03/25 全球购物
linux面试题参考答案(2)
2015/12/06 面试题
环境科学专业研究生求职信
2013/10/02 职场文书
应用电子专业学生的自我评价
2013/10/16 职场文书
演讲稿怎么写
2014/01/07 职场文书
洗车工岗位职责
2014/03/15 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
优秀大学生自荐信
2015/03/26 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
Flask搭建一个API服务器的步骤
2021/05/28 Python
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL