canvas 画文字模糊的问题

在 mac 下的 chrome 当你按下 command + + 的时候会放大网页,这时 devicePixelRatio 会发生变化,默认情况下这个值为 1,当网页放大到 250% 时,这个值会变成 2.5。我们在 canvas 画图写字,就要处理 devicePixelRatio 这个变量的改变,这和高清屏是一样的道理。

下面是一个例子,如论你的 devicePixelRatio 是多少,文字和图片都可以正常显示。可以通过缩放网页,来修改此值。

根据 devicePixelRatio 做处理

他的核心代码如下:

var devicePixelRatio = window.devicePixelRatio || 1
var backingStoreRatio = context.backingStorePixelRatio || 1
var ratio = devicePixelRatio / backingStoreRatio

canvas.width = oldWidth * ratio;
canvas.height = oldHeight * ratio;

不做处理

如果不做处理就会是下面这种效果。

完整的代码

See the Pen devicePixelRatio in canvas fillText by zeng (@zengxiaoluan) on CodePen.

有一些面试题会问 `drawImage` 能不能画不同域名(也就是跨域)下的图片,根据上面的例子,答案是可以的。

参考链接

作者: 曾小乱

喜欢写点有意思的东西

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据