uniapp在微信小程序中动态绘制canvas宽高

1.假设宽100%,高1200rpx,通过query.select('#myCanvas').boundingClientRect接口获取元素宽高,动态赋值

<template>
   <canvas canvas-id="myCanvas" id="myCanvas" style="width: 100%; height: 1200rpx"></canvas>
</template>
<script setup lang="ts">
const init = ()=>{
 const ctx = uni.createCanvasContext('myCanvas')
 const query = uni.createSelectorQuery()
  query
    .select('#myCanvas')
    .boundingClientRect((data: any) => {
      console.log(data)
      // 绘制底图
      uni.getImageInfo({
        src: mock.value?.backgroundImageUrl, //底部图片
        success: (res) => {
          ctx.drawImage(res.path, 0, 0, data?.width, data?.height) // 假设canvas大小为375x667

          ctx.setFontSize(18)
          ctx.setFillStyle('white')
          ctx.fillText(mock.value?.name, 20, data?.height - 80) // 调整文字位置
          // 绘制左下角文字
          ctx.setFontSize(14)
          ctx.setFillStyle('white')
          ctx.fillText(mock.value?.text, 20, data?.height - 60) // 调整文字位置
          // 绘制左下角文字
          ctx.setFontSize(12)
          ctx.setFillStyle('white')
          ctx.fillText(mock.value?.tip, 40, data?.height - 35) // 调整文字位置

          // 绘制右下角二维码
          uni.getImageInfo({
            src: mock.value?.qrCodeImageUrl,
            success: (qrRes) => {
              ctx.drawImage(qrRes.path, data?.width - 104, data?.height - 104, 84, 84) // 调整二维码位置、大小和圆角
              ctx.draw(false, () => {
                // 绘制完成后的回调,可以在这里做其他事情,比如更新页面状态
              })
            },
            fail: (err) => {
              console.error('加载二维码图片失败:', err)
            },
          })
        },
        fail: (err) => {
          console.error('加载底图失败:', err)
        },
      })
    })
    .exec()
}
onReady(()=>{
   init()
})
</script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容