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轻松实现圆角效果
Nov 09 HTML / CSS
使用CSS实现阅读进度条
Feb 27 HTML / CSS
CSS中越界问题的经典解决方案【推荐】
Apr 19 HTML / CSS
css3进阶之less实现星空动画的示例代码
Sep 10 HTML / CSS
CSS3实现莲花绽放的动画效果
Nov 06 HTML / CSS
10个最常见的HTML5面试题 附答案
Jun 06 HTML / CSS
浅谈h5自定义audio(问题及解决)
Aug 19 HTML / CSS
HTML5新增加的功能详解
Sep 05 HTML / CSS
HTML5各种头部meta标签的功能(推荐)
Mar 13 HTML / CSS
使用phonegap克隆和删除联系人的实现方法
Mar 31 HTML / CSS
HTML5仿微信聊天界面、微信朋友圈实例代码
Jan 29 HTML / CSS
AmazeUI框架搭建的方法步骤(图文)
Aug 17 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使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
如何离线执行php任务
2017/02/21 PHP
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
appendChild() 或 insertBefore()使用与区别介绍
2013/10/11 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
详解JS模块导入导出
2017/12/20 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
微信小程序 冒泡事件原理解析
2019/09/27 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
在Python的循环体中使用else语句的方法
2015/03/30 Python
Python装饰器使用实例:验证参数合法性
2015/06/24 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
python中sys.argv函数精简概括
2018/07/08 Python
python线程里哪种模块比较适合
2020/08/02 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
仓库门卫岗位职责
2013/12/22 职场文书
大三学生入党思想汇报
2014/01/02 职场文书
销售个人求职信范文
2014/04/28 职场文书
微笑面对生活演讲稿
2014/05/13 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
主持人开场白台词
2015/05/29 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
Python turtle实现贪吃蛇游戏
2021/06/18 Python
ubuntu下常用apt命令介绍
2022/06/05 Servers
JavaScript圣杯布局与双飞翼布局实现案例详解
2022/08/05 Javascript