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 水印相机、水印视频
176浏览 • 1回复 待解决
canvas如何实现水印效果
1114浏览 • 1回复 待解决
HarmonyOS 绘制水印如何实现?
296浏览 • 1回复 待解决
HarmonyOS 如何使用全局水印
106浏览 • 1回复 待解决
HarmonyOS app全局水印怎么实现
25浏览 • 1回复 待解决
如何使用canvas添加水印
1549浏览 • 1回复 待解决
HarmonyOS 使用canvas进行图片水印操作
36浏览 • 1回复 待解决
HarmonyOS 如何给图片增加文字水印
170浏览 • 1回复 待解决
HarmonyOS 如何给图片右下角增加文字水印
204浏览 • 1回复 待解决
基于原生的水印添加能力
949浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何使用Canvas组件和OffscreenCanvas实现水印功能?
398浏览 • 1回复 待解决
HarmonyOS 背景水印问题
449浏览 • 1回复 待解决
HarmonyOS是否支持图片添加水印
456浏览 • 1回复 待解决
HarmonyOS拍照后图片添加水印
34浏览 • 1回复 待解决
HarmonyOS 是否有提供从相册选择照片,然后绘制水印的示例
131浏览 • 1回复 待解决
图片处理(加动态水印)
408浏览 • 1回复 待解决
HarmonyOS 如何给应用所有或者部分界面一次性加上水印?
512浏览 • 1回复 待解决
HarmonyOS windows级别添加水印
161浏览 • 1回复 待解决
HarmonyOS 有没有对UI添加水印的方法
208浏览 • 1回复 待解决
HarmonyOS 如何在app内全页面添加水印
161浏览 • 1回复 待解决
HarmonyOS 拍照后的图片加水印
217浏览 • 1回复 待解决
HarmonyOS 图片增加自定义水印
114浏览 • 1回复 待解决
HarmonyOS 如何给 app 添加水印
584浏览 • 1回复 待解决
HarmonyOS 如何给UI界面添加一个水印布局
487浏览 • 1回复 待解决
HarmonyOS PDF添加水印后展示白屏
191浏览 • 1回复 待解决
判断条件必须包在根节点里面,可以在外面包一层column即可正常使用,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builder-V5#builder函数里面使用的组件没有根节点包裹
示例参考如下: