当前位置: 首页 > article >正文

鸿蒙UI开发——组件滤镜效果

1、概 述

ArkUI为组件提供了滤镜效果设置,背景滤镜、前景滤镜、合成滤镜。我们可以通过以下方式为组件设置对应的滤镜效果。

Text('前景滤镜')// ..其他属性.foregroundFilter(filterTest1) // 通过 foregroundFilter 设置模糊效果Text('背景滤镜')// ...其他属性.backgroundFilter(filterTest2) // 通过 backgroundFilter 设置模糊效果Text('合成滤镜')// ...其他属性.compositingFilter(filterTest3) // 通过 compositingFilter 设置模糊效果

具体用法,下面展开介绍。

2、设置滤镜效果

foregroundFilter、backgroundFilter、compositingFilter三个属性的入参是Filter对象。Filter对象的创建方式如下:​​​​​​​

import { uiEffect } from "@kit.ArkGraphics2D";// ....let filter : uiEffect.Filter = uiEffect.createFilter()

目前Filter对象暂时只能设置一种效果,blur模糊效果,接口如下:

blur(blurRadius: number): Filter

我们创建好的Filter则可以传入到组件对应的属性中。

一个案例如下(有一个文本组件,有一张背景图片,分别设置三种滤镜效果):

    • 前景滤镜将文字进行模糊处理;

    • 背景对背景图片进行了处理;

    • 合成滤镜是对两者同时进行处理;

【注意:目前版本的IDE预览器中是看不到效果的,需要在真机或者模拟器中运行】

图片

代码如下:​​​​​​​

// xxx.etsimport { uiEffect } from '@kit.ArkGraphics2D';@Entry@Componentstruct FilterEffectExample {  @State filterTest1: uiEffect.Filter = uiEffect.createFilter().blur(10)  @State filterTest2: uiEffect.Filter = uiEffect.createFilter().blur(10)  @State filterTest3: uiEffect.Filter = uiEffect.createFilter().blur(10)  build() {    Column({ space: 15 }) {      Text('originalImage').fontSize(20).width('75%').fontColor('#DCDCDC')      Text('没有滤镜')        .width(100)        .height(100)        .backgroundColor('#ADD8E6')        .backgroundImage($r("app.media.test"))        .backgroundImageSize({ width: 100, height: 100 })      Text('foregroundFilter').fontSize(20).width('75%').fontColor('#DCDCDC')      Text('前景滤镜')        .width(100)        .height(100)        .backgroundColor('#ADD8E6')        .backgroundImage($r("app.media.test"))        .backgroundImageSize({ width: 100, height: 100 })        .foregroundFilter(this.filterTest1) // 通过 foregroundFilter 设置模糊效果      Text('backgroundFilter').fontSize(20).width('75%').fontColor('#DCDCDC')      Text('背景滤镜')        .width(100)        .height(100)        .backgroundColor('#ADD8E6')        .backgroundImage($r("app.media.test"))        .backgroundImageSize({ width: 100, height: 100 })        .backgroundFilter(this.filterTest2) // 通过 backgroundFilter 设置模糊效果      Text('compositingFilter').fontSize(20).width('75%').fontColor('#DCDCDC')      Text('合成滤镜')        .width(100)        .height(100)        .backgroundColor('#ADD8E6')        .backgroundImage($r("app.media.test"))        .backgroundImageSize({ width: 100, height: 100 })        .compositingFilter(this.filterTest3) // 通过 compositingFilter 设置模糊效果    }    .height('100%')    .width('100%')  }}


http://www.kler.cn/a/448479.html

相关文章:

  • Set集合进行!contains判断IDEA提示Unnecessary ‘contains()‘ check
  • leetcode-128.最长连续序列-day14
  • 一道Delphi的面试题
  • 【机器学习与数据挖掘实战】案例04:基于K-Means算法的信用卡高风险客户识别
  • STM32, GD32 cubemx CAN 低速率125kbps 报文丢失,解决了
  • RadiAnt DICOM - 基本主题 :从 PACS 服务器打开研究
  • 【深度学习|Transformer模型学习】Transformer 块的起源、发展和概述!快来看看吧
  • Ansible部署及基础模块
  • 远程过程调用(RPC,Remote Procedure Call)是一种协议
  • CSS|12 display属性
  • 机器学习(Machine Learning)的安全问题
  • Web APIs学习 (操作DOM BOM)
  • 什么样的LabVIEW控制算自动控制?
  • c++--------c++概念
  • AI搜索之问题分解 智谱清言、Felo、360 AI搜索、mindsearch
  • ESP8266 WiFi模块入门:搭建网络与测试实践
  • 普通人不搞副业还有什么出路?难道都能选择躺平?
  • 记录仪方案_记录仪安卓主板定制_音视频记录仪PCBA定制开发
  • Ubuntu Netlink 套接字使用介绍
  • Linux之进程相关命令
  • 版本更新导致前端网站资源加载失败:Failed to fetch dynamically imported module
  • 设计模式の享元模板代理模式
  • Redis 基本命令操作指南
  • 解决Ubuntu下蓝牙耳机连接成功但无声音输出问题
  • 开源轮子 - EasyExcel01(核心api)
  • 高超声速技术对于无人机的推进!