• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 图像效果 (系统接口)
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @CCFFWW-->
5<!--Designer: @yangfan229-->
6<!--Tester: @lxl007-->
7<!--Adviser: @HelloCrease-->
8
9设置组件与下方画布已有内容进行混合的图像效果。
10
11> **说明:**
12>
13> 本模块首批接口从API version 13开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
14>
15> 当前页面仅包含本模块的系统接口,其他公开接口参见[图像效果](ts-universal-attributes-image-effect.md)。
16
17## advancedBlendMode
18
19advancedBlendMode(effect: BlendMode | Blender, type?: BlendApplyType): T
20
21将当前组件的内容(包含子节点内容)与下方画布(可能为离屏画布)已有内容进行混合。不能与[blendMode](ts-universal-attributes-image-effect.md#blendmode11)接口同时使用。
22
23**卡片能力:** 从API version 13开始,该接口支持在ArkTS卡片中使用。
24
25**系统能力:** SystemCapability.ArkUI.ArkUI.Full
26
27**系统接口:** 此接口为系统接口。
28
29**参数:**
30
31| 参数名 | 类型                            | 必填 | 说明                                                         |
32| ------ | ------------------------------- | ---- | ------------------------------------------------------------ |
33| effect  | [BlendMode](ts-universal-attributes-image-effect.md#blendmode11枚举说明)&nbsp;\|&nbsp;[Blender](../../apis-arkgraphics2d/js-apis-uiEffect-sys.md#blender13)  | 是   | 入参类型为BlendMode时表示混合模式。<br/>默认值:BlendMode.NONE <br/>入参类型为Blender时表示混合器类型,用于描述混合效果。<br/>需要使用uiEffect模块中的方法创建Blender实例。例如:[uiEffect.createBrightnessBlender](../../apis-arkgraphics2d/js-apis-uiEffect-sys.md#uieffectcreatebrightnessblender)。使用自定义object作为入参不会生效。  |
34| type   | [BlendApplyType](ts-universal-attributes-image-effect.md#blendapplytype11枚举说明)  |    否    | blendMode实现方式是否离屏。<br/>默认值:BlendApplyType.FAST<br/>**说明:**<br/>1. 设置BlendApplyType.FAST时,不离屏。<br/>2. 设置BlendApplyType.OFFSCREEN时,会创建当前组件大小的离屏画布,再将当前组件(含子组件)的内容绘制到离屏画布上,再用指定的混合模式与下方画布已有内容进行混合。<br/>3. 不离屏情况下对文字类组件中emoji表情不生效。     |
35
36**返回值:**
37
38| 类型 | 说明 |
39| -------- | -------- |
40| T | 返回当前组件。 |
41
42## 示例
43
44该示例主要通过advancedBlendMode给组件添加提亮效果。
45
46```ts
47// xxx.ets
48import { uiEffect } from "@kit.ArkGraphics2D";
49
50// uiEffect.createBrightnessBlender创建BrightnessBlender实例用于给组件添加提亮效果
51let blender: uiEffect.BrightnessBlender = uiEffect.createBrightnessBlender({
52  cubicRate: 0.5,
53  quadraticRate: 0.5,
54  linearRate: 0.5,
55  degree: 0.5,
56  saturation: 0.5,
57  positiveCoefficient: [2.3, 4.5, 2.0],
58  negativeCoefficient: [0.5, 2.0, 0.5],
59  fraction: 0.5
60});
61// 自定义object作为入参不会生效
62let blender1: uiEffect.BrightnessBlender = {
63  cubicRate: 0.5,
64  quadraticRate: 0.5,
65  linearRate: 0.5,
66  degree: 0.5,
67  saturation: 0.5,
68  positiveCoefficient: [2.3, 4.5, 2.0],
69  negativeCoefficient: [0.5, 2.0, 0.5],
70  fraction: 0.5
71};
72
73@Entry
74@Component
75struct Index {
76  build() {
77    Stack() {
78      Image($r('app.media.img_1'))
79
80      Column() {
81        Text(String.fromCodePoint(0x1F600) + 'TEST')
82          .fontSize(60)
83
84        Text(String.fromCodePoint(0x1F600) + 'FAST')
85          .fontSize(60)
86          .advancedBlendMode(blender)
87
88        Text(String.fromCodePoint(0x1F600) + 'OFFSCREEN')
89          .fontSize(60)
90          .advancedBlendMode(blender, BlendApplyType.OFFSCREEN)
91
92        Text(String.fromCodePoint(0x1F600) + 'TEST')
93          .fontSize(60)
94          .advancedBlendMode(blender1)
95      }
96    }
97  }
98}
99```
100
101效果图如下:
102
103![advancedBlendMode](figures/advancedBlendMode.jpg)