HarmonyOS 用Canvas绘制文字水印,独立出全局水印方法,加上判断水印就无法生效
1、在任意页面根组件的overlay方法调用全局水印方法。
2、一但全局水印方法有任何判断语句均无法绘制。
代码如下:
import { GlobalContext } from '../common/config/GlobalContext';
import { userEntity } from '../utils/CacheInfoUtils';
let settings: RenderingContextSettings = new RenderingContextSettings(true);
let context: CanvasRenderingContext2D = new CanvasRenderingContext2D(settings);
let user = GlobalContext.getContext().getObject('userEntry') as userEntity
let sysParamConfig =
GlobalContext.getContext().getObject('sysParamConfig') as Record<string, string>;
let CLIENT_ALLOW_WATERMARK = sysParamConfig['CLIENT_ALLOW_WATERMARK']
function isWater(): boolean {
if (sysParamConfig) {
if (CLIENT_ALLOW_WATERMARK) {
if (CLIENT_ALLOW_WATERMARK === "off") {
return false
} else if (CLIENT_ALLOW_WATERMARK === "on") {
return true
}
}
}
return false;
}
/**
* 全局水印方法
**/
@Builder
export function Water() {
if (1 < 3) {
Canvas(context)
.width("100%")
.height("100%")
.hitTestBehavior(HitTestMode.None)
.onReady(() => {
context.fillStyle = '#10000000'
context.font = "16vp"
context.textAlign = "center"
context.textBaseline = "middle"
// 在这里绘制文字水印,也可以是图片水印
for (let i = 0; i < context.width / 120; i++) {
context.translate(120, 0)
let j = 0
for (; j < context.height / 120; j++) {
context.rotate(-Math.PI / 180 * 30)
// 此处水印数据是写死的,具体请替换为自己的水印
context.fillText(user.true_name, -60, -60)
context.rotate(Math.PI / 180 * 30)
context.translate(0, 120)
}
context.translate(0, -120 * j)
}
})
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 水印相机、水印视频
489浏览 • 1回复 待解决
canvas如何实现水印效果
1367浏览 • 1回复 待解决
HarmonyOS 绘制水印如何实现?
415浏览 • 1回复 待解决
HarmonyOS 如何使用全局水印
253浏览 • 1回复 待解决
HarmonyOS app全局水印怎么实现
160浏览 • 1回复 待解决
如何使用canvas添加水印
1786浏览 • 1回复 待解决
HarmonyOS 使用canvas进行图片水印操作
364浏览 • 1回复 待解决
HarmonyOS 如何给图片增加文字水印
283浏览 • 1回复 待解决
HarmonyOS 如何给图片右下角增加文字水印
330浏览 • 1回复 待解决
HarmonyOS 背景水印问题
556浏览 • 1回复 待解决
基于原生的水印添加能力
1160浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何使用Canvas组件和OffscreenCanvas实现水印功能?
761浏览 • 1回复 待解决
HarmonyOS是否支持图片添加水印
585浏览 • 1回复 待解决
HarmonyOS拍照后图片添加水印
260浏览 • 1回复 待解决
HarmonyOS 是否有提供从相册选择照片,然后绘制水印的示例
308浏览 • 1回复 待解决
图片处理(加动态水印)
518浏览 • 1回复 待解决
HarmonyOS windows级别添加水印
270浏览 • 1回复 待解决
HarmonyOS 有没有对UI添加水印的方法
336浏览 • 1回复 待解决
HarmonyOS 如何给应用所有或者部分界面一次性加上水印?
658浏览 • 1回复 待解决
HarmonyOS 图片增加自定义水印
225浏览 • 1回复 待解决
HarmonyOS 拍照后的图片加水印
332浏览 • 1回复 待解决
HarmonyOS 如何给 app 添加水印
812浏览 • 1回复 待解决
HarmonyOS 如何在app内全页面添加水印
316浏览 • 1回复 待解决
HarmonyOS PDF添加水印后展示白屏
330浏览 • 1回复 待解决
HarmonyOS APP内有水印功能,如何实现?
678浏览 • 0回复 待解决
判断条件必须包在根节点里面,可以在外面包一层column即可正常使用,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builder-V5#builder函数里面使用的组件没有根节点包裹
示例参考如下: