codecamp

支付宝小程序 UI·页面水印

在小程序页面添加自定义水印。使用水印组件 <water-mark> 时,该组件需与被加上水印的模块对应的 <view>保持同级。

扫码体验

水印二维码.png

前提条件

使用水印的前提条件如下:

获取模板代码

下载 水印 Demo.zip 文件,并解压至本地。

页面使用

page.axml

<water-mark fillText="侵权必究" />

参数说明

字段名 简介 类型 默认值
fillText 水印内容 String 侵权必究

示例代码

index.axml

<canvas id="canvas" width="610" height="610" class="water-canvas"   />  

index.acss

.water-canvas {
  position: fixed;
  top:0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: transparent;
}
/* 控制button组件可以在水印上点击 */
button{
  position: relative;
}

index.js

Component({
  props: {
    fillText: '侵权必究' // 水印文本,默认值
  },
  didMount() {
    this.ctx = my.createCanvasContext('canvas');
    this.drawWater();
  },
  didUpdate() {
    this.drawWater();
  },
  methods: {
    /**
     * @name drawWater
     * @description 填充水印
     */
    drawWater() {
      const { fillText } = this.props;
      this.ctx.rotate(18 * Math.PI / 180);// 设置文字的旋转角度,角度为30°
      // 对斜对角线以左部分进行文字的填充
      for (let j = 1; j < 10; j++) { // 用for循环达到重复输出文字的效果,这个for循环代表纵向循环
        this.fill(fillText, 0, 90 * j);
        for (let i = 1; i < 10; i++) { // 这个for循环代表横向循环,
          this.fill(fillText, 130 * i, 80 * j);
        }
      }// 两个for循环的配合,使得文字充满斜对角线的左下部分


      // 对斜对角线以右部分进行文字的填充逻辑同上
      for (let j = 0; j < 10; j++) {
        this.fill(fillText, 0, -80 * j);
        for (let i = 1; i < 10; i++) {
          this.fill(fillText, 130 * i, -80 * j);
        }
      }
      this.ctx.draw();
    },
    /**
     * @name fill
     * @description 绘画水印
     */
    fill(text, x, y){
      this.ctx.beginPath();
      this.ctx.setFontSize(20);
      this.ctx.setFillStyle('rgba(169,169,169,.2)');
      this.ctx.fillText(text, x, y);
    }


  }
});

index.json

{
  "component": true
}
支付宝小程序 UI·透明标题栏
支付宝小程序 UI·获取手机验证码
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

支付宝小程序开发文档

支付宝小程序 快速示例

支付宝小程序 小程序快速示例

支付宝小程序 框架

支付宝小程序 组件

支付宝小程序组件 基础组件

支付宝小程序组件 无障碍访问

支付宝小程序 扩展组件

支付宝小程序扩展组件 UI组件

支付宝小程序 API

支付宝小程序 开发工具

支付宝小程序 云服务

支付宝小程序 Serverless

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }