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 水印相机、水印视频 
1716浏览  • 1回复 待解决
canvas如何实现水印效果 
2263浏览  • 1回复 待解决
HarmonyOS 绘制水印如何实现? 
1099浏览  • 1回复 待解决
HarmonyOS 如何使用全局水印 
925浏览  • 1回复 待解决
HarmonyOS app全局水印怎么实现 
973浏览  • 1回复 待解决
如何使用canvas添加水印 
2780浏览  • 1回复 待解决
HarmonyOS 使用canvas进行图片水印操作 
1300浏览  • 1回复 待解决
HarmonyOS 如何给图片增加文字水印 
1216浏览  • 1回复 待解决
HarmonyOS 如何给图片右下角增加文字水印 
1116浏览  • 1回复 待解决
HarmonyOS 背景水印问题 
1626浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何使用Canvas组件和OffscreenCanvas实现水印功能? 
2144浏览  • 1回复 待解决
基于原生的水印添加能力 
2460浏览  • 1回复 待解决
HarmonyOS 是否有提供从相册选择照片,然后绘制水印的示例 
969浏览  • 1回复 待解决
HarmonyOS拍照后图片添加水印 
1305浏览  • 1回复 待解决
HarmonyOS是否支持图片添加水印 
1311浏览  • 1回复 待解决
图片处理(加动态水印) 
1045浏览  • 1回复 待解决
HarmonyOS  windows级别添加水印 
911浏览  • 1回复 待解决
HarmonyOS  有没有对UI添加水印的方法 
929浏览  • 1回复 待解决
HarmonyOS 如何给应用所有或者部分界面一次性加上水印? 
1166浏览  • 1回复 待解决
HarmonyOS  拍照后的图片加水印 
957浏览  • 1回复 待解决
HarmonyOS  如何给 app 添加水印 
1618浏览  • 1回复 待解决
HarmonyOS 图片增加自定义水印 
850浏览  • 1回复 待解决
HarmonyOS APP内有水印功能,如何实现? 
1569浏览  • 1回复 待解决
HarmonyOS PDF添加水印后展示白屏 
932浏览  • 1回复 待解决
HarmonyOS 如何在app内全页面添加水印 
1258浏览  • 1回复 待解决





















判断条件必须包在根节点里面,可以在外面包一层column即可正常使用,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builder-V5#builder函数里面使用的组件没有根节点包裹
示例参考如下: