echarts背景添加水印

echarts背景添加水印的方法有很多,目前简单介绍两种:

1. 通过echarts提供的工具 graphic 实现

1)首先引入工具:

import VueEcharts from "vue-echarts";
import "echarts/lib/chart/bar";
import "echarts/lib/component/tooltip";
import "echarts/lib/component/title";

2)使用:

options:{
    ...其他配置项,
    graphic: {
        elements: generateWatermarks(),
  },
    ...其他配置项,
}
//生成水印的方法
const generateWatermarks = () => {
  const watermarks: any[] = [];
  const maxRotationAngle = 15; // 最大倾斜角度
  const rotationStep = maxRotationAngle / 9; // 控制每行或每列的倾斜变化幅度

  for (let i = 0; i < 10; i++) {
    for (let j = 0; j < 10; j++) {
      // 计算每个水印的旋转角度,这里使用行列索引结合以获得不同角度
      const rotationAngle = (i + j) * rotationStep;
      watermarks.push({
        type: "text",
        left: i * 30 + "%",
        top: j * 30 + "%",
        z: -10,
        style: {
          fill: "rgba(0,0,0,0.1)",
          text: "xxx",//水印文字
          font: "bold 20px Microsoft YaHei",
          transform: `rotate(${rotationAngle}deg)`, // 应用水印旋转
        },
      });
    }
  }
  return watermarks;
};

注意:该方式如果未生效可检查使用的echarts版本是否支持水印

2.通过canvas使用

const canvas = ref<any>(null);

//options配置项
const chartData = ref<any>({
      ...其它配置项,
      backgroundColor: {
        //在背景属性中添加
         type: "pattern",
         image: canvas,
         repeat: "repeat",
      },
      ...其它配置项,
    })

//声明一个生成水印的函数
const addWatermark = () => {
  const waterMarkText = "xxxxx";//填充水印的文字
  canvas.value = document.createElement("canvas");
  const ctx: any = canvas.value.getContext("2d");
  canvas.value.width = canvas.value.height = 180;
  ctx.textAlign = "center";
  ctx.textBaseline = "middle";
  ctx.globalAlpha = 0.07;
  ctx.font = "20px Microsoft Yahei";
  ctx.translate(50, 50);
  ctx.rotate(-Math.PI / 4);//水印倾斜的角度
  ctx.fillText(waterMarkText, 0, 0);
};

//onMounted函数中执行该方法
onMounted(() => {
  addWatermark();
});

效果图如果所示:

总结:第二种方法比较好用,推荐第二种,不仅可以适配echarts还可以适配其他场景。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是个程序员吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值