canvas绘图模糊处理(高分屏下的canvas绘制)

在高分屏上,未处理的Canvas绘制内容相比其他元素显得模糊。这是因为Canvas的逻辑像素始终为1物理像素,而在高分屏下,1逻辑像素对应多个物理像素。解决方法是根据devicePixelRatio调整Canvas的画布大小,使其为物理像素大小,然后通过CSS设置Canvas元素大小为逻辑像素大小。最后使用CSS的scale进行等比放大,保持内容清晰。通过这种方法,可以实现高分屏下Canvas的高清绘制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景

在移动端通过 H5 的 canvas 标签绘制图表的时候,不经过任何处理的图表相比较其他元素看起来会有些模糊。

先看下面一组高分屏下的圆,上面是普通 div 元素“绘制”的圆,下面是通过 canvas 绘制的圆。可以看出,下面的圆相比较是模糊的。

在这里插入图片描述

为什么会这样?

一台普通屏幕上的像素(逻辑像素),可以当做是正常的像素(css中设置的像素),当画一个100px的元素,他就是一个100px的元素。

但是,在出现了一些高分辨率的屏幕之后,就发生了一些变化。随之也出现了一个属性 devicePixelRatio ,它允许我们去查询设备屏幕的像素比。高分屏下(假设devicePixelRatio为3),在css设置的100px(逻辑像素),实际渲染的是300px的物理像素

而不管是否为高分屏, canvas 中的单位 1 (逻辑像素),就是 1 物理像素,所以在高分屏下,canvas 绘制的图片看起来就模糊了(可以想象成,一张清晰度正常的普通图片为了布满整个背景被强行放大 n 倍,所以看起来模糊了)。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值