news 2026/8/2 4:21:39

HarmonyOS6 filter 通用属性使用指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HarmonyOS6 filter 通用属性使用指南

文章目录

    • 1.核心特性
      • DropShadowOption 结构说明
    • 2. 完整示例代码解析
      • 2.1 代码结构说明
      • 2.2 关键代码解析
    • 3. 运行前置条件
      • 3.1 环境配置
      • 3.2 运行方式
    • 4. 常见问题及解决方案
    • 总结

1.核心特性

特性说明
适用版本HarmonyOS API 10+
支持组件Image、Text、Button、Span、ImageSpan
核心能力提供9类滤镜效果,支持动态参数调节
类型要求所有对象参数需显式声明完整结构,禁止空对象{}

DropShadowOption 结构说明

子参数类型说明
blurRadiusnumber阴影模糊半径,非负值
colorstring阴影颜色(支持rgba/十六进制)
offsetXnumber阴影X轴偏移量
offsetYnumber阴影Y轴偏移量

2. 完整示例代码解析

2.1 代码结构说明

以下代码实现了filter属性的全参数动态调节,包含状态管理、交互控制、参数重置等核心功能,适配 ArkTS 严格类型检查规则:

@Entry@Componentstruct FilterDemo{// 状态变量(避免与内置方法重名)@StateblurSwitch:boolean=false;@StatebrightnessVal:number=1.0;@StatecontrastVal:number=1.0;@StategraySwitch:boolean=false;@StatehueVal:number=0;@StateinvertSwitch:boolean=false;@StatesaturateVal:number=1.0;@StatesepiaSwitch:boolean=false;@StateshadowSwitch:boolean=false;build(){// 主布局Column(){// 标题Text('HarmonyOS6 滤镜演示(兼容版)').fontSize(22).fontWeight(700)// 直接用数字,避免FontWeight导入.margin({top:20,bottom:15});// 图片展示区(API 10+ 启用filter)Image('https://picsum.photos/300/200').width(300).height(200).borderRadius(12).backgroundColor('#f5f5f5')// ========== filter 核心配置(API 10+ 启用)==========.filter({blur:this.blurSwitch?'5px':'0px',brightness:this.brightnessVal,contrast:this.contrastVal,grayscale:this.graySwitch?1:0,hueRotate:`${this.hueVal}deg`,invert:this.invertSwitch?1:0,saturate:this.saturateVal,sepia:this.sepiaSwitch?1:0,dropShadow:this.shadowSwitch?{blurRadius:8,color:'#66000000',offsetX:4,offsetY:4}:{blurRadius:0,color:'#00000000',offsetX:0,offsetY:0}})// ====================================================// 控制区(滚动布局适配屏幕)Scroll(){Column({space:10}){// 1. 模糊控制Button(this.blurSwitch?'关闭模糊':'开启模糊(5px)').width('90%').onClick(()=>this.blurSwitch=!this.blurSwitch);// 2. 亮度调节Text(`亮度:${this.brightnessVal.toFixed(1)}`).fontSize(14).margin(15);Slider({value:this.brightnessVal,min:0,max:2,step:0.1,style:SliderStyle.OutSet}).width('90%').onChange((v)=>this.brightnessVal=v);// 3. 对比度调节Text(`对比度:${this.contrastVal.toFixed(1)}`).fontSize(14).margin(15);Slider({value:this.contrastVal,min:0,max:2,step:0.1,style:SliderStyle.OutSet}).width('90%').onChange((v)=>this.contrastVal=v);// 4. 灰度控制Button(this.graySwitch?'关闭灰度':'开启灰度').width('90%').onClick(()=>this.graySwitch=!this.graySwitch);// 5. 色相旋转调节Text(`色相旋转:${this.hueVal}°`).fontSize(14).margin(15);Slider({value:this.hueVal,min:0,max:360,step:10,style:SliderStyle.OutSet}).width('90%').onChange((v)=>this.hueVal=v);// 6. 反色控制Button(this.invertSwitch?'关闭反色':'开启反色').width('90%').onClick(()=>this.invertSwitch=!this.invertSwitch);// 7. 饱和度调节Text(`饱和度:${this.saturateVal.toFixed(1)}`).fontSize(14).margin(15);Slider({value:this.saturateVal,min:0,max:3,step:0.1,style:SliderStyle.OutSet}).width('90%').onChange((v)=>this.saturateVal=v);// 8. 复古控制Button(this.sepiaSwitch?'关闭复古':'开启复古').width('90%').onClick(()=>this.sepiaSwitch=!this.sepiaSwitch);// 9. 阴影控制Button(this.shadowSwitch?'关闭阴影':'开启阴影').width('90%').onClick(()=>this.shadowSwitch=!this.shadowSwitch);// 重置按钮Button('重置所有参数').width('90%').backgroundColor('#ff4d4f').fontColor('#ffffff').margin(10).onClick(()=>{this.blurSwitch=false;this.brightnessVal=1.0;this.contrastVal=1.0;this.graySwitch=false;this.hueVal=0;this.invertSwitch=false;this.saturateVal=1.0;this.sepiaSwitch=false;this.shadowSwitch=false;});}.padding(10)}.height('60%')}.width('100%').padding(10).justifyContent(0)}}

运行效果如图:

2.2 关键代码解析

  1. 状态变量设计

    • 变量名添加Switch/Val后缀(如blurSwitchbrightnessVal),避免与 ArkUI 内置方法(如brightness())重名。
    • 所有变量通过@State装饰,实现参数修改后滤镜效果实时刷新。
  2. filter 核心配置

    • blur:通过布尔值切换5px/0px,控制模糊开关。
    • 数值型参数(如brightness/contrast)直接绑定滑块值,支持连续调节。
    • dropShadow始终返回完整结构(无空对象{}),符合 ArkTS 严格类型检查规则。
  3. 交互控制

    • 开关类滤镜(模糊/灰度/反色等)通过 Button 切换布尔值。
    • 连续调节类滤镜(亮度/对比度/色相)通过 Slider 组件绑定数值。
    • 重置按钮一键恢复所有参数默认值。

3. 运行前置条件

3.1 环境配置

  1. DevEco Studio 版本 ≥ 4.0。
  2. 工程 API 版本配置(entry/build-profile.json5):
    {"apiType":"stageMode","compileSdkVersion":10,"compatibleSdkVersion":10}
  3. 同步 SDK:点击 DevEco Studio 右上角Sync Now,确保 API 10 相关依赖下载完成。

3.2 运行方式

  1. 优先选择API 10+ 远程模拟器/真机运行(预览器可能存在兼容性问题)。
  2. 若使用低版本 API(<10),需注释filter相关代码,仅保留交互框架。

4. 常见问题及解决方案

问题原因解决方案
Property 'filter' does not exist on type 'ImageAttribute'API 版本 < 10升级工程 API 版本至 10+
Object literal must correspond to some explicitly declared class or interfacedropShadow 使用空对象{}声明完整的 DropShadowOption 结构(即使参数为0)
Property 'brightness' is not assignable to base type变量名与内置方法重名变量名添加后缀(如brightnessVal
Cannot find module '@ohos.public.ArkUI'导入路径错误移除特殊导入,用数字替代枚举(如700替代FontWeight.Bold

总结

  1. filter是 HarmonyOS API 10+ 提供的强大视觉滤镜属性,支持9类常用滤镜效果。
  2. 使用时需注意组件兼容性(仅支持显示类组件)和类型检查规则(禁止空对象)。
  3. 示例代码实现了全参数动态调节,可直接复用至实际项目,适配严格模式语法规范。
  4. 低版本工程需升级 API 或使用imageEffect做降级处理。

如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/2 4:20:53

Halcon一些基本语法

*halcon的数据类型&#xff1a;图形变量、控制变量 *图形变量&#xff08;image&#xff09;、区域&#xff08;region&#xff09;轮廓类型、 *控制变量&#xff1a;基本数据类型&#xff08;整型、浮点类型、字符串类型、bool类型&#xff09;、句柄、元组类型*1 获取窗口的句…

作者头像 李华
网站建设 2026/7/14 15:02:10

nodejs+vue基于springboot的高校考研交流平台

目录技术栈选择系统架构设计功能模块划分开发环境搭建数据库设计API接口开发前端页面开发测试与部署性能优化安全措施项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作技术栈选择 后端采用Spring Boot框…

作者头像 李华
网站建设 2026/7/14 15:02:11

两会新媒体破圈:微博热搜600+,阅读量超千亿

全国两会期间&#xff0c;新媒体成为传递政策声音、凝聚社会共识的核心载体&#xff0c;其中微博平台表现尤为突出——超600个两会相关话题登上热搜&#xff0c;50余个话题位居热搜前列&#xff0c;相关话题总阅读量突破1000亿&#xff0c;推动两会声音实现全民可达、全程可感的…

作者头像 李华
网站建设 2026/7/14 15:02:09

Flink从入门到上天系列第二十一篇:Flink当中的检查点配置

一&#xff1a;检查点配置Flink的配置文件当中有检查点的配置&#xff0c;还有另外一中是在代码里边配置。二&#xff1a;启动检查点默认情况下&#xff0c;Flink程序是禁用检查点的。如果想要为Flink应用开启自动保存快照的功能&#xff0c;需要在代码中显式地调用执行环境的.…

作者头像 李华
网站建设 2026/7/14 15:02:12

AI驱动的横向移动:自动化发现与利用攻击路径的实战教程

郑重声明&#xff1a; 本文所有攻击演示和代码示例&#xff0c;仅限在获得明确授权的测试环境中使用。严禁用于任何非法目的&#xff0c;否则后果自负。 前言 1. 技术背景&#xff1a;横向移动在现代攻击链中的核心地位 在网络攻击的生命周期中&#xff0c;攻击者在获得初始立…

作者头像 李华