编程语言
首页 > 编程语言> > 微信小程序开发水印设置

微信小程序开发水印设置

作者:互联网

方法来自:http://t.zoukankan.com/lhl66-p-12917217.html

1.在根目录创建components文件夹 在components下创建 watermark 文件夹 再在其下面创建page 得到 watermark.js watermark.json watermark.wxml watermark.wxss;

  1. 使用规则在相关页面的json配置文件下配置 usingComponents 即可使用组件如下示例
  "usingComponents": {
    "van-toast": "@vant/weapp/toast/index",
    "van-button": "@vant/weapp/button/index",
    "canvas-watermark": "../../components/watermark/watermark"
  }
// watermark.js
Component({
    data: {
      // 这里是一些组件内部数据
      watermarkText: '水印测试'
    },
    attached() {
      // 在组件实例进入页面节点树时执行
      // this.drowsyUserinfo()
      this.setData({
        watermarkText: (wx.getStorageSync('userInfo') || {}).name || '水印测试'
      })
    },
    methods: {
      // 这里是一个自定义方法
      drowsyUserinfo: function () {
          var userInfo = wx.getStorageSync('userInfo') || {};
          var nameText = userInfo.name || '水印测试';
          var ctx = wx.createCanvasContext("myCanvas");
          ctx.rotate(20 * Math.PI / 180); //设置文字的旋转角度,角度为45°;
          //对斜对角线以左部分进行文字的填充
          //用for循环达到重复输出文字的效果,这个for循环代表纵向循环
          for (let j = 1; j < 10; j++) { 
            ctx.beginPath();
            ctx.setFontSize(16);
            ctx.setFillStyle("rgba(0,155,169,.5)");
            ctx.fillText(nameText, 0, 50 * j);
            for (let i = 1; i < 10; i++) { //这个for循环代表横向循环
              ctx.beginPath();
              ctx.setFontSize(15);
              ctx.setFillStyle("rgba(0,155,169,.5)");
              ctx.fillText(nameText, 180 * i, 150 * j);
            }
          }
          //两个for循环的配合,使得文字充满斜对角线的左下部分
          //对斜对角线以右部分进行文字的填充逻辑同上
          for (let j = 0; j < 10; j++) {
            ctx.beginPath();
            ctx.setFontSize(16);
            ctx.setFillStyle("rgba(0,155,169,.5)");
            ctx.fillText(nameText, 0, -50 * j);
            for (let i = 1; i < 10; i++) {
              ctx.beginPath();
              ctx.setFontSize(16);
              ctx.setFillStyle("rgba(0,155,169,.5)");
              ctx.fillText(nameText, 180 * i, -150 * j);
            }
          }
          ctx.draw();
      }
  }
})
<!-- <canvas-watermark>
    <canvas canvas-id='myCanvas' class="canvas-watermark" style="pointer-events: none;"></canvas>
</canvas-watermark> -->
<!-- watermark.wxml只需要这一串 -->
<view class="water_top" style="pointer-events: none;">
    <view class="water-text">{{watermarkText}}</view>
    <view class="water-text">{{watermarkText}}</view>
    <view class="water-text">{{watermarkText}}</view>
    <view class="water-text">{{watermarkText}}</view>
    <view class="water-text">{{watermarkText}}</view>
    <view class="water-text">{{watermarkText}}</view>
    <view class="water-text">{{watermarkText}}</view>
    <view class="water-text">{{watermarkText}}</view>
</view>
/* .water_top {
    position: absolute;
    z-index: 9999;
    opacity: 0.9;
    top: 0;
    bottom: 0;
    height: 100%;
     100%;
  }
  .canvas-watermark{
    height:100%;
     100%;
  } */

  /* watermark.wxss 只需要这个 */
  .water_top{
    position: fixed;
    top:0;
    bottom: 0;
    left: 0;
    right: 0;
    /* background: #999; */
    transform:rotate(-10deg);
    /* opacity: 0.9; */
    z-index: 9999999999;
  }
  .water-text{
    float: left;
    width:375rpx;
    color: rgba(169,169,169,.2);
    text-align: center;
    font-size: 15px;
    margin: 120rpx 0;
  }
watermark.json文件

{
  "component": true
}
页面内使用标签即可实现自定义组件(页面水印)的使用;
<!-- 水印 -->
<canvas-watermark></canvas-watermark>

标签:rgba,watermark,微信,程序开发,ctx,水印,nameText,169,watermarkText
来源: https://www.cnblogs.com/czjjy/p/16661971.html