HarmonyOS 如何给 app 添加水印

HarmonyOS  如何给 app 添加水印。

HarmonyOS
2024-09-24 11:42:14
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

在页面背景上添加全局水印的方法:

方式一:使用canvas进行绘制。

Stack({ alignContent: Alignment.Center }) {  
  Column() {  
    Text("没有数据哦").fontColor("#495057")  
    Image($r("app.media.empty")).width(300)  
  }  
  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)  
      }  
    })  
}.layoutWeight(1)

方式二:使用overlay属性绘制。

方式二思路与方式一实现思路一致,该方式可以讲水印组件单独拧出来,在其他使用时使用overlay属性来使用,实现效果与方式一一致。

@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)  
      }  
    })  
}  
Column() {  
  Text("没有数据哦").fontColor("#495057")  
  Image($r("app.media.empty")).width(300)  
}  
.layoutWeight(1)  
.overlay(this.Watermark())  
.width("100%")
分享
微博
QQ
微信
回复
2024-09-24 15:56:47
相关问题
HarmonyOS是否支持图片添加水印
333浏览 • 1回复 待解决
如何使用canvas添加水印
1335浏览 • 1回复 待解决
HarmonyOS 有没有对UI添加水印的方法
53浏览 • 1回复 待解决
基于原生的水印添加能力
802浏览 • 1回复 待解决
如何按钮添加图片?
5584浏览 • 4回复 待解决
如何组件添加双击事件?
506浏览 • 1回复 待解决
如何文字添加下划线?
642浏览 • 1回复 待解决
文本添加上划线如何实现?
413浏览 • 1回复 待解决
HarmonyOS 绘制水印如何实现?
239浏览 • 1回复 待解决
canvas如何实现水印效果
952浏览 • 1回复 待解决
HarmonyOS 背景水印问题
364浏览 • 1回复 待解决