canvas绘制图形与设置的不一致

文章探讨了为何在设置Canvas样式尺寸为60px时,实际绘制的图形不完整。CSS尺寸与实际像素尺寸不一致源于设备像素比。为解决此问题,需通过JavaScript显式设置Canvas的像素尺寸,确保两者一致。
摘要由CSDN通过智能技术生成

问题:设置canvas的style的width和height的值为60px;fillrect(0,0,60,60);绘制出来的图形是不完全的。且通过js打印canvas.width和canvas.height为300和150,在开发者工具中查看 Canvas 元素的宽度和高度为 60px

原因:开发者工具显示的是 CSS 指定的样式尺寸。而通过 JavaScript 获取的 Canvas 宽度和高度为 300px 和 150px 是 Canvas 元素的实际像素尺寸。

为什么样式尺寸会和实际像素尺寸不一致?

样式尺寸和实际像素尺寸不一致的原因可能是由于设备像素比(Device Pixel Ratio,简称 DPR)导致的。设备像素比是指物理像素和 CSS 像素之间的比例关系。在高分辨率屏幕上,一个 CSS 像素可能对应多个物理像素,这样可以在保持相同的物理尺寸的情况下显示更多的细节。

例如,对于一个设备像素比为 2 的设备,一个 CSS 像素可能对应 2 个物理像素。这意味着如果你在 CSS 中设置一个元素的宽度为 100px,而这个元素在设备像素比为 2 的设备上显示,那么它的实际像素宽度将为 200px(100px * 2)。

Canvas 元素也受到设备像素比的影响。当你在 CSS 中设置 Canvas 的样式尺寸时,浏览器会根据设备像素比来确定实际的像素尺寸。而通过 JavaScript 获取的 Canvas 宽度和高度通常代表的是 Canvas 元素的实际像素尺寸。

为了解决这个问题,你可以通过 JavaScript 显式设置 Canvas 元素的像素尺寸,以确保它与 CSS 指定的尺寸一致。你可以在设置完样式尺寸后,通过设置 canvas.widthcanvas.height 来指定 Canvas 的像素尺寸,如下所示:

canvas.width = 300; canvas.height = 150;

注意不是canvas.style.width!

这样就可以确保开发者工具中查看的 CSS 尺寸和 JavaScript 获取的像素尺寸一致了。

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值