HarmonyOS6 filter 通用属性使用指南

HarmonyOS6 filter 通用属性使用指南

文章目录

1.核心特性

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

DropShadowOption 结构说明

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

2. 完整示例代码解析

2.1 代码结构说明

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

@Entry@Component struct FilterDemo {// 状态变量(避免与内置方法重名)@State blurSwitch:boolean=false;@State brightnessVal:number=1.0;@State contrastVal:number=1.0;@State graySwitch:boolean=false;@State hueVal:number=0;@State invertSwitch:boolean=false;@State saturateVal:number=1.0;@State sepiaSwitch:boolean=false;@State shadowSwitch: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. 同步 SDK:点击 DevEco Studio 右上角 Sync Now,确保 API 10 相关依赖下载完成。

工程 API 版本配置(entry/build-profile.json5):

{"apiType":"stageMode","compileSdkVersion":10,"compatibleSdkVersion":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 做降级处理。
如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力!

Read more

SillyTavern(酒馆)一个可以安装在电脑(和安卓手机)上的人工智能互动角色聊天/角色扮演游戏

SillyTavern(酒馆)一个可以安装在电脑(和安卓手机)上的人工智能互动角色聊天/角色扮演游戏

SillyTavern 是一个可以安装在电脑(和安卓手机)上的用户界面,让您可以与文本生成的人工智能互动,并与您或社区创建的角色聊天/玩角色扮演游戏。 官网:SillyTavern/SillyTavern: LLM Frontend for Power Users. 当然可惜的是说明书是英文的:What is SillyTavern? | docs.ST.app 功能亮点‌: 1. ‌全平台适配界面‌:专为移动设备优化,操作流畅,体验友好。 2. ‌多模型兼容‌:无缝支持主流AI服务与模型,涵盖KoboldAI/CPP、Horde、NovelAI、Ooba、OpenAI、OpenRouter、Claude、Scale等,满足多样化需求。 3. ‌沉浸式交互模式‌:独创「Galgame式老婆模式」,结合动态角色互动与情感化叙事,打造个性化体验。 4. ‌Horde SD整合‌

By Ne0inhk
AI提示词管理工具AiShort

AI提示词管理工具AiShort

简介 什么是 AiShort? AiShort (原名 ChatGPT Shortcut) 是一个精选的 AI 提示词库,能帮助用户更高效地使用大语言模型(LLM),例如 ChatGPT。它内置了大量经过优化和筛选的提示词,覆盖写作、编程、学术、求职等多种场景。用户只需一键复制,即可获得高质量的 AI 回复,极大地提升了工作和学习效率。 主要特点 * 精选提示词库:内置上百个专业、实用的提示词,并持续更新。 * 智能搜索与过滤:通过关键词搜索或标签分类,快速定位你需要的提示词。 * 多语言支持:所有提示词均已翻译成十多种主流语言,方便不同母语的用户使用。 * 一键复制:简化操作流程,点击即可复制提示词,直接粘贴到任何 AI 对话窗口。 * 无需注册:用户无需注册即可立即开始使用,方便快捷。 * 我的收藏(高级功能):用户可以保存喜欢的提示,并进行排序和自定义标签管理。 * 导出功能:支持将所有提示导出为

By Ne0inhk
全民“养虾“指南:2026年市面上所有主流AI Agent(小龙虾)完整梳理

全民“养虾“指南:2026年市面上所有主流AI Agent(小龙虾)完整梳理

哈喽,大家好,我是顾北! 最近你的微信群里,大概率出现了这句话:"你的龙虾养好了吗?" 不到半年,一个叫 OpenClaw 的开源项目在 GitHub 上狂揽 27万+ Star,超越 React、Linux,登顶全球开源项目历史第一。国内各大互联网厂商争相入局,深圳有人为帮装一只龙虾排队近千人,闲鱼上代装服务最高喊价 5000 元。 但现在,"龙虾"的阵营已经不只有 OpenClaw 一家了。 本文把目前市面上主要的 AI Agent 产品(统称"小龙虾家族")全部整理出来,包括官方渠道、适合人群和安全情况,帮你选到最适合自己的那只虾。 先说清楚:什么是"小龙虾"? "

By Ne0inhk
Python开发者的创意免疫系统:当AI入侵数据时如何防御

Python开发者的创意免疫系统:当AI入侵数据时如何防御

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎点赞 + 收藏 + 关注哦 💕 Python开发者的创意免疫系统:当AI入侵数据时如何防御 📚 本文简介 AI分析用户数据生成模块,不是创意的终结,而是新起点。🚀 Python让你有能力把AI当工具,而不是威胁。咱们的创意,像Python代码一样——可读、可扩展、永远有优化空间。未来,AI可能更智能,但人类的脑洞,永远是那个“杀手级应用”。所以,别焦虑,拿起键盘,用Python写点有灵魂的代码吧! 目录 * Python开发者的创意免疫系统:当AI入侵数据时如何防御 * 📚 本文简介 * 📚 一、引言:AI的数据自助餐与创意的饥饿游戏 * 📚 二、AI如何“嚼数据吐模块”:技术解剖与幽默解读 * 📘1、AI的数据消化系统:从用户数据到功能模块的流水线 * 📘2、Python在AI数据解析中的角色:幽默技术栈揭秘

By Ne0inhk