最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
canvas绘图不清晰的解决方案
时间:2017-05-09 编辑:简简单单 来源:一聚教程网
现象描述
同样大小的图片(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数字计算 误差问题的快速解决方法
相关文章
- 使用Canvas绘制一个游戏人物属性图代码展示 09-28
- canvas 绘图时位置偏离的问题解决方法 09-16
- 基于canvas实现超炫酷的流水灯效果代码示例 05-20
- canvas绘制折线路径动画实现代码示例 05-12
- Canvas三种动态画圆实现方法代码 04-20
- Canvas跟随鼠标炫彩小球实现代码 04-14