HarmonyOS Canvas如何重置clip

主要代码如下,通过点击事件切换pathType,

1. 初始化运行得到图1,这里是正确的。

2. 点击一下pathType设置为false,得到图2,这里也是正确的。

3. 再次点击pathType设置为true,得到图3,是错误的。正确的应该是和图一一样的。if else里面的clip(path1)同时生效小了。

请问如果才能重置clip,使得if else 里面的path只能生效一个?

if (this.pathType) {  
  let path1 = new Path2D()  
  path1.moveTo(0, 0)  
  path1.lineTo(this.context.width, 0)  
  path1.lineTo(this.context.width * 0.5, this.context.height)  
  path1.lineTo(0, this.context.height)  
  path1.closePath()  
  this.context.clip(path1)  
} else {  
  let path1 = new Path2D()  
  path1.moveTo(0, 0)  
  path1.lineTo(this.context.width * 0.5, 0)  
  path1.lineTo(this.context.width, this.context.height)  
  path1.lineTo(0, this.context.height)  
  path1.closePath()  
  this.context.clip(path1)  
}

图一:

HarmonyOS Canvas如何重置clip-鸿蒙开发者社区

图二:

HarmonyOS Canvas如何重置clip-鸿蒙开发者社区

图三:

HarmonyOS Canvas如何重置clip-鸿蒙开发者社区
HarmonyOS
2024-10-12 11:11:22
浏览
已于2024-10-12 11:13:51修改
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

可以这么写:

if (this.saved){  
     this.context.restore()  
   }  
   else {  
     this.context.save()  
     this.saved = true  
   }

需要把:

if (this.saved){  
    this.context.restore()  
  }  
  else {  
    this.context.save()  
    this.saved = true  
  }

替换为:

this.context.restore()    
this.context.save()
分享
微博
QQ
微信
回复
2024-10-12 16:47:06
相关问题
HarmonyOS .clip矩形裁切无法生效
475浏览 • 1回复 待解决
HarmonyOS如何手动重置自定义组件?
612浏览 • 1回复 待解决
HarmonyOS 订阅subGroupGenerationId重置相关
390浏览 • 1回复 待解决
HarmonyOS 导航栏跳转后重置
363浏览 • 1回复 待解决
HarmonyOS Canvas如何设置圆角
240浏览 • 1回复 待解决
HarmonyOS 如何使用Canvas画扇形
352浏览 • 1回复 待解决
HarmonyOS Canvas如何触发重绘
622浏览 • 1回复 待解决
HarmonyOS Canvas绘制内容如何更新
214浏览 • 1回复 待解决
HarmonyOS 如何使用canvas绘制虚线
175浏览 • 1回复 待解决
HarmonyOS 如何Canvas重绘
204浏览 • 1回复 待解决
组件的通用属性clip有什么作用?
915浏览 • 1回复 待解决
canvas如何实现水印效果
1257浏览 • 1回复 待解决
如何操作canvas重新绘制
1389浏览 • 1回复 待解决