uniapp 微信小程序 canvas 手写板文字重复倾斜水印

在这里插入图片描述

核心逻辑

先将坐标系中心点通过ctx.translate(canvasw / 2, canvash / 2) 平移到canvas 中心,再旋转设置水印

假如不 translate 直接旋转,则此时的旋转中心为左上角原点,此时旋转示意如图所示

在这里插入图片描述

当translate到中心点之后再旋转,此时则会变成这样

在这里插入图片描述

当 ctx.translate(x, y) 之后,实际上是将坐标系横移

在这里插入图片描述
此时ctx.fillText('水印文本', 0, 0) 的位置如图显示
在这里插入图片描述

我们循环从 -5 开始循环,此时得到的坐标点则为四个象限内均有

for (var i = -5; i < 5; i++) {
 for (var j = -5; j < 5; j++) {
   const x = i * 140
   const y = j * 60
   this.canvasCtx.fillText('水印文本', x, y)
 }
}

在这里插入图片描述

此时,我们再进行旋转,ctx.rotate((-30 * Math.PI) / 180),注意,此时是 -30 度

在这里插入图片描述

其他:设置水印前需要存储一下状态 ctx.save(),水印设置完成后 ctx.restore()

水印完整代码

// 设置水印文字
handleWaterMark: function (canvasw, canvash, text = '水印文本') {
  // 设置白色背景
  this.canvasCtx.fillStyle = '#fff'
  this.canvasCtx.fillRect(0, 0, canvasw, canvash)
  // 设置水印文字
  // 存储状态
  this.canvasCtx.save()
  this.canvasCtx.font = '16px sans-serif'
  this.canvasCtx.fillStyle = 'rgba(0, 0, 0, 0.2)'
  this.canvasCtx.translate(canvasw / 2, canvash / 2)
  this.canvasCtx.rotate((-30 * Math.PI) / 180)
  // 绘制水印
  for (var i = -5; i < 5; i++) {
    for (var j = -5; j < 5; j++) {
      const x = i * 140
      const y = j * 60
      this.canvasCtx.fillText(text, x, y)
    }
  }
  this.canvasCtx.draw(true)
  // 回退状态
  this.canvasCtx.restore()
},

相关推荐

  1. 程序canvas签字

    2024-03-28 08:18:04       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-28 08:18:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-28 08:18:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-28 08:18:04       87 阅读
  4. Python语言-面向对象

    2024-03-28 08:18:04       96 阅读

热门阅读

  1. Swift xcode app自动化

    2024-03-28 08:18:04       45 阅读
  2. 开发过程中PostgreSQL常用的SQL语句,持续更新ing

    2024-03-28 08:18:04       38 阅读
  3. 算法——深度优秀搜索和广度优秀搜索

    2024-03-28 08:18:04       42 阅读
  4. C++构造函数

    2024-03-28 08:18:04       32 阅读
  5. Laplace变换-2

    2024-03-28 08:18:04       38 阅读
  6. 基于Python的高考志愿辅助填报系统

    2024-03-28 08:18:04       41 阅读
  7. js文件同步和异步的引入问题

    2024-03-28 08:18:04       42 阅读
  8. http协议中缓存Cache-Control详解

    2024-03-28 08:18:04       38 阅读
  9. C#WPF控件Label宽度绑定到父控件的宽度

    2024-03-28 08:18:04       35 阅读