挖坑指南: canvas元素的宽高属性和css中的宽高(大型翻车现场..)

在微信小程序中制作分享海报时遇到canvas背景图片填充异常的问题,通过研究canvas.drawImage()方法参数,发现canvas的宽高属性与CSS样式中的宽高不同,导致背景绘制不全。解决方案是为canvas显式设置宽高属性,以确保正确填充背景。

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

原文链接

前言

在微信小程序中做分享海报, 需要绘制 canvas,设置图片 100% 占满元素, 作为海报的背景。

开始

文档翻一翻, canvas.drawImage() 一把梭, 呃呃呃…发现背景图片没有按照原图 100% 平铺, 而是只取了部分, 变形了

实践

装X失败, 还是仔仔细细看看文档
drawImage(image sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) 从 1.9.0 起支持
先来分析以下这些参数的含义吧~ 和 h5 中的参数是一致的

  • sx 源图像的矩形选择框的左上角 x 坐标
  • sy 源图像的矩形选择框的左上角 y 坐标
  • sWidth 源图像的矩形选择框的宽度
  • sHeight 源图像的矩形选择框的高度
  • dx 图像的左上角在目标 canvasx 轴的位置
  • dy 图像的左上角在目标 canvasy 轴的位置
  • dWidth 在目标画布上绘制图像的宽度, 允许对绘制的图像进行缩放
  • dHeight 在目标画布上绘制图像的高度, 允许对绘制的图像进行缩放
    看完是不是[黑人问号.jpg], whatttt…???
    上图上图
    一图胜千言
    再看看我们失败的代码(此处使用普通h5作为演示)
<img id="tulip" src="/share/img/bg-second@3x.png"&g
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值