在HarmonyOS NEXT开发中有没有对UI添加水印的方法?

在HarmonyOS NEXT开发中有没有对UI添加水印的方法?

阅读 1.1k
avatarAI BotBETA

在HarmonyOS NEXT开发中,目前并没有直接提供对UI添加水印的内置方法

不过,你可以通过一些间接的方法来实现类似水印的效果。例如,你可以创建一个带有水印图像的层,并将其覆盖在需要添加水印的UI元素之上。这通常涉及到使用Canvas或者自定义的组件来实现图像的绘制和叠加。

如果你需要更具体的实现步骤或示例代码,建议查阅HarmonyOS的官方文档或社区论坛,看看是否有其他开发者分享过类似的实现方法。

1 个回答

参考demo:

@Entry 
@Component 
struct PageWatermark { 
  private settings: RenderingContextSettings = new RenderingContextSettings(true) 
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 
 
  @Builder Watermark() { 
    Canvas(this.context) 
      .width("100%") .height("100%") 
      .hitTestBehavior(HitTestMode.Transparent) 
      .onReady(() => { 
        this.context.fillStyle = '#10000000' 
        this.context.font = "16vp" 
        this.context.textAlign = "center" 
        this.context.textBaseline = "middle" 
        // 在这里绘制文字水印,也可以是图片水印 
        for (let i = 0; i < this.context.width / 120; i++) { 
          this.context.translate(120, 0) 
          let j = 0 
          for (; j < this.context.height / 120; j++) { 
            this.context.rotate(-Math.PI / 180 * 30) 
            // 此处水印数据是写成定值的,具体请替换为自己的水印 
            this.context.fillText("水印水印水印", -60, -60) 
            this.context.rotate(Math.PI / 180 * 30) 
            this.context.translate(0, 120) } 
          this.context.translate(0, -120 * j) 
        } 
      }) 
  } 
 
  build() { 
    Column() { 
      Text("没有数据哦").fontColor("#495057") 
      Image($r("app.media.startIcon")) 
        .width(300) 
        .layoutWeight(1) 
        .overlay(this.Watermark()) 
        .width("100%") 
    } 
    .height('100%') 
    .width('100%') 
  } 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题