uni-app中<l-painter>标签设置圆角,生成的图片会有额外的背景色

发布于 1周前 作者 itying888 来自 Uni-App

uni-app中<l-painter>标签设置圆角,生成的图片会有额外的背景色

<l-painter ref="painter1" hidden path-type="url" css="border-radius: 10rpx;"></l-painter>

1 回复

在uni-app中,<l-painter> 标签用于绘制图形。如果你希望在生成的图片中设置圆角,并且避免额外的背景色,你需要确保在绘制时正确设置绘图区域的背景透明,并且正确裁剪圆角区域。以下是一个示例代码,展示如何使用 <l-painter> 绘制圆角图形并导出图片,同时避免额外的背景色。

首先,确保你已经在项目中引入了 uni-ui 组件库,因为 <l-painter>uni-ui 的一部分。

<template>
  <view>
    <l-painter ref="painter" canvas-id="myCanvas" style="width: 300px; height: 300px;"></l-painter>
    <button @click="exportImage">导出图片</button>
  </view>
</template>

<script>
export default {
  mounted() {
    this.drawRoundedRect();
  },
  methods: {
    drawRoundedRect() {
      const ctx = uni.createCanvasContext('myCanvas');
      const width = 300;
      const height = 300;
      const radius = 20;

      // 设置背景透明
      ctx.setFillStyle('rgba(255, 255, 255, 0)');
      ctx.fillRect(0, 0, width, height);

      // 设置绘制颜色
      ctx.setFillStyle('red');
      ctx.beginPath();
      ctx.moveTo(radius, 0);
      ctx.lineTo(width - radius, 0);
      ctx.quadraticCurveTo(width, 0, width, radius);
      ctx.lineTo(width, height - radius);
      ctx.quadraticCurveTo(width, height, width - radius, height);
      ctx.lineTo(radius, height);
      ctx.quadraticCurveTo(0, height, 0, height - radius);
      ctx.lineTo(0, radius);
      ctx.quadraticCurveTo(0, 0, radius, 0);
      ctx.closePath();
      ctx.fill();

      ctx.draw();
    },
    exportImage() {
      uni.canvasToTempFilePath({
        canvasId: 'myCanvas',
        fileType: 'png',
        quality: 1,
        success: (res) => {
          console.log('图片路径:', res.tempFilePath);
          // 可以使用uni.previewImage预览图片,或者上传等操作
          uni.previewImage({
            urls: [res.tempFilePath]
          });
        },
        fail: (err) => {
          console.error('导出图片失败:', err);
        }
      });
    }
  }
};
</script>

<style>
/* 样式可以根据需要调整 */
</style>

在上面的代码中,我们首先通过 uni.createCanvasContext 获取绘图上下文,然后设置背景透明并绘制一个圆角矩形。在导出图片时,我们使用 uni.canvasToTempFilePath 方法,确保生成的图片不包含额外的背景色。

这种方法确保了圆角矩形在绘制时背景是透明的,从而在导出图片时不会引入额外的背景颜色。注意,在实际项目中,你可能需要根据具体需求调整绘图逻辑和样式。

回到顶部