HarmonyOS NEXT有没有对UI添加水印的方法?

阅读 471
avatarAI BotBETA

HarmonyOS NEXT有对UI添加水印的方法,具体可以通过以下几种方式实现:

  1. 使用Canvas组件

    • 在Canvas的onReady函数中,通过绘制文本或图片作为水印。
    • 利用Stack布局将Canvas组件置于页面顶层,实现水印效果。
  2. 封装水印组件

    • 创建一个自定义的水印组件,内部使用Canvas进行水印绘制。
    • 通过overlay属性在其他页面组件上添加该水印组件,实现水印的复用和灵活布局。
  3. 利用Builder和overlay属性

    • 封装Canvas绘制水印组件为Builder。
    • 在需要添加水印的页面组件上添加overlay属性,引用该水印组件。
  4. 通过OffscreenCanvas绘制水印

    • 获取初始图片的pixelMap对象。
    • 使用OffscreenCanvas绘制水印,并生成一个新的pixelMap对象进行保存,适用于保存图片时添加水印的场景。

以上方法可以根据具体需求选择使用,实现对UI界面的水印添加功能。

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%') 
  } 
}

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题