微信小程序开发水印设置
方法来自:http://t.zoukankan.com/lhl66-p-12917217.html
1.在根目录创建components文件夹 在components下创建 watermark 文件夹 再在其下面创建page 得到 watermark.js watermark.json watermark.wxml watermark.wxss;
- 使用规则在相关页面的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>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通