先来理解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图被放大且模糊内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!
前言 在上一篇文章中我为大家介绍了Simpe项目的一些 背景知识 以及如何使用 有限...
先看效果: 实现: 1.定义导航栏的文字标签: div class=tou sapn class=logo 北...
Dreamweaver中想要给文字中的个别文字添加背景色,该怎么添加呢?下面我们就来看...
再次感谢大家对 Flutter Engage China 活动 的关注和积极参与!我们在活动前后收...
事件的防抖和节流 防抖和节流函数是我们经常用到的函数,在实际的开发过程中,如...
使用Dreamweaver设计了一个个人简历,想要给简历添加自己的照片,该怎么添加并排...
一、概述 上一篇文章介绍了 使用 docker 部署 spring boot 并接入 skywalking ,...
An Lock Free ID Generator for Golang implementation View on GitHub . Snowfl...
研发背景,解决什么问题 点击约束:某个按钮触发一次点击后,待接口调用有结果都...
记录下一个疑问,最近在重新看canvas做点Demo这样,时间是写在2019年11月5日,以...