欢迎来到代码驿站!

JavaScript代码

当前位置:首页 > 网页前端 > JavaScript代码

canvas绘图不清晰的解决方案

时间:2021-04-07 10:11:15|栏目:JavaScript代码|点击:

现象描述

  同样大小的图片(60x60px)用canvas和DOM绘制,结果发现canvas的画面质量要差很多。结果如下图所示。

  上图中,左侧红框中的金币采用DOM绘制,右侧和下方的金币和文字等使用canvas绘制,结果canvas绘制的图片模糊不清。

原因分析

  假设dpr = 2;图片大小为60x60px;对dpr有一定的了解基础。

  1.DOM呈现图片过程

  图片――》浏览器css像素(显示尺寸)――》屏幕实际像素

  60x60              30x30                              60x60

  图片像素――》实际像素

  1: 1

  2.canvas绘制过程

  图片像素――》canvas像素(画布尺寸)――》css像素(显示尺寸)――》屏幕实际像素

  60x60               30x30                              30x30                          60x60

  图片像素――》画布像素――》实际像素

  4:                    1:                  4

  也就是说,canvas的绘制过程中图片到画布的过程中进行了像素的抽稀,画布到屏幕像素时又进行了插值,所以造成图片质量下降。

解决方案

  放大画布的尺寸,但是canvas显示尺寸不变;

  图片像素――》canvas像素(画布尺寸)――》css像素(显示尺寸)――》屏幕实际像素

  60x60               60x60                                           30x30            60x60

  图片像素――》实际像素

  1:                1 

而canvas的设计的时候正好有对象的属性来分别管理画布尺寸和显示尺寸;canvas的width、height属性用于管理画布尺寸;canvas的style属性中的width、height正好是显示尺寸。

也就是说解决方案就是设置舞台的尺寸和图片像素的尺寸一致,显示尺寸为正常显示尺寸;假设canvas的显示尺寸为窗口宽度,创建canvas的时候指定canvas的width属性为2 * body.clientHeight;style.widht为body.clientHeight + 'px';

改变后的效果图如下:

上一篇:js实现仿QQ秀换装效果的方法

栏    目:JavaScript代码

下一篇:JS实现闭包中的沙箱模式示例

本文标题:canvas绘图不清晰的解决方案

本文地址:http://www.codeinn.net/misctech/96107.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有