1.在根目录创建components文件夹 在components下创建 watermark 文件夹 再在其下面创建page 得到 watermark.js watermark.json watermark.wxml watermark.wxss;
2. 使用规则在相关页面的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(); } } })
<!-- 水印 -->
<!-- <view class='water_top' style="pointer-events: none;"> <slot></slot> </view> -->
<!-- <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%; width: 100%; } .canvas-watermark{ height:100%; width: 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>
原创未经允许不得转载!!!转载请注明出处~谢谢合作;