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教程(2):网页边框半径和网页圆角
Apr 02 HTML / CSS
使用CSS3配合IE滤镜实现渐变和投影的效果
Sep 06 HTML / CSS
CSS3 实现弹幕的示例代码
Aug 07 HTML / CSS
html5应用缓存_动力节点Java学院整理
Jul 13 HTML / CSS
HTML5 LocalStorage 本地存储刷新值还在
Mar 10 HTML / CSS
详解HTML5中的picture元素响应式处理图片
Jan 03 HTML / CSS
HTML5实现移动端复制功能
Apr 19 HTML / CSS
详解Html5页面实现下载文件(apk、txt等)的三种方式
Oct 22 HTML / CSS
Canvas高级路径操作之拖拽对象的实现
Aug 05 HTML / CSS
用canvas显示验证码的实现
Apr 10 HTML / CSS
wordpress添加Html5的表单验证required方法小结
Aug 18 HTML / CSS
CSS浮动引起的高度塌陷问题
Aug 05 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 nl2br函数 将换行字符转成 &amp;lt;br&amp;gt;
2009/08/21 PHP
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
JS简单添加元素新节点的方法示例
2018/02/10 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
python实现四人制扑克牌游戏
2020/04/22 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
大学学年自我鉴定
2013/10/28 职场文书
30年同学聚会邀请函
2014/01/25 职场文书
安卓程序员求职信
2014/02/28 职场文书
竞争上岗实施方案
2014/03/21 职场文书
期末学生评语大全
2014/04/24 职场文书
理发店策划方案
2014/06/05 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server