• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.graphics.uiEffect (效果级联)(系统接口)
2
3本模块提供组件效果的一些基础能力,包括模糊、边缘像素扩展、提亮等。效果被分为Filter和VisualEffect大类,同类效果可以级联在一个效果大类的实例下。在实际开发中,模糊可用于背景虚化,提亮可用于亮屏显示等。
4
5- [Filter](#filter):用于添加指定Filter效果到组件上。
6- [VisualEffect](#visualeffect):用于添加指定VisualEffect效果到组件上。
7
8> **说明:**
9>
10> - 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
11> - 页面仅包含本模块的系统接口,其他公开接口参见[ohos.graphics.uiEffect (效果级联)](js-apis-uiEffect.md)。
12
13## 导入模块
14
15```ts
16import { uiEffect } from "@kit.ArkGraphics2D";
17```
18## uiEffect.createBrightnessBlender
19createBrightnessBlender(param: BrightnessBlenderParam): BrightnessBlender
20
21创建BrightnessBlender实例用于给组件添加提亮效果。
22
23**系统能力:** SystemCapability.Graphics.Drawing
24
25**系统接口:** 此接口为系统接口。
26
27**参数:**
28| 参数名  | 类型                                              | 必填 | 说明                        |
29| ------ | ------------------------------------------------- | ---- | --------------------------- |
30| param  | [BrightnessBlenderParam](#brightnessblenderparam) | 是   | 实现提亮效果的参数。 |
31
32**返回值:**
33
34| 类型                                     | 说明                     |
35| ---------------------------------------- | ----------------------- |
36| [BrightnessBlender ](#brightnessblender) | 返回设置了提亮效果参数的BrightnessBlender。 |
37
38**示例:**
39
40```ts
41let blender : uiEffect.BrightnessBlender =
42  uiEffect.createBrightnessBlender({cubicRate:1.0, quadraticRate:1.0, linearRate:1.0, degree:1.0, saturation:1.0,
43    positiveCoefficient:[2.3, 4.5, 2.0], negativeCoefficient:[0.5, 2.0, 0.5], fraction:0.0})
44```
45
46## Filter
47Filter效果类,用于将相应的效果添加到指定的组件上。在调用Filter的方法前,需要先通过[createFilter](js-apis-uiEffect.md#uieffectcreatefilter)创建一个Filter实例。
48
49### pixelStretch
50pixelStretch(stretchSizes: Array\<number\>, tileMode: TileMode): Filter
51
52将边缘像素扩展效果添加至组件上。
53
54**系统能力:** SystemCapability.Graphics.Drawing
55
56**系统接口:** 此接口为系统接口。
57
58**参数:**
59| 参数名         | 类型                  | 必填 | 说明                       |
60| ------------- | --------------------- | ---- | ------------------------- |
61| stretchSizes  | Array\<number\>         | 是   | 上下左右四个方向边缘像素扩展的百分比比例,取值范围为[-1, 1]。<br/>正值表示向外扩展,上下左右四个方向分别用指定原图比例的边缘像素填充。负值表示内缩,但是最终图像大小不变。<br/>注意四个方向对应的参数需统一为非正值或非负值。|
62| tileMode      | [TileMode](#tilemode) | 是   | 边缘像素扩展的像素填充模式。 |
63
64
65**返回值:**
66
67| 类型              | 说明                               |
68| ----------------- | --------------------------------- |
69| [Filter](#filter) | 返回挂载了边缘像素扩展效果的Filter。 |
70
71**示例:**
72
73```ts
74filter.pixelStretch([0.2, 0.2, 0.2, 0.2], uiEffect.TileMode.CLAMP)
75```
76
77### waterRipple
78waterRipple(progress: number, waveCount: number, x: number, y: number, rippleMode: WaterRippleMode): Filter
79
80将水波纹效果添加至组件上。
81
82**系统能力:** SystemCapability.Graphics.Drawing
83
84**系统接口:** 此接口为系统接口。
85
86**参数:**
87| 参数名         | 类型                  | 必填 | 说明                       |
88| ------------- | --------------------- | ---- | ------------------------- |
89| progress  | number         | 是   | 表示水波纹的进度,取值范围为[0, 1]。<br/>水波纹进度越趋向于1,水波纹展示越完全。<br/>超出取值范围水波纹不会出现效果。|
90| waveCount      | number | 是   | 水波纹波动时波纹的个数,取值范围为[1, 3]。<br/>水波纹的个数只能取整数,如果为浮点数或超出取值范围,水波纹不会出现效果。 |
91| x      | number | 是   | 水波纹中心在屏幕中第一次出现的x轴位置。<br/>水波纹对屏幕进行归一化处理,左上角的坐标为(0, 0),右上角坐标为(1, 0)。<br/>当x取值为负值时,代表在屏幕左侧。|
92| y      | number | 是   | 水波纹中心在屏幕中第一次出现的y轴位置。<br/>水波纹对屏幕进行归一化处理,左上角的坐标为(0, 0),左下角坐标为(0, 1)。<br/>当y取值为负值时,代表在屏幕上方。 |
93| rippleMode      | [WaterRippleMode](#waterripplemode) | 是   | 水波纹的场景模式。|
94
95
96**返回值:**
97
98| 类型              | 说明                               |
99| ----------------- | --------------------------------- |
100| [Filter](#filter) | 返回挂载了水波纹效果的Filter。 |
101
102**错误码:**
103
104以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
105
106| 错误码ID | 错误信息 |
107| ------- | -------------------------------- |
108| 202  | Permission verification failed. A non-system application calls a system API. |
109
110**示例:**
111
112```ts
113filter.waterRipple(0.5, 2, 0.5, 0.5, uiEffect.WaterRippleMode.SMALL2SMALL)
114```
115
116### flyInFlyOutEffect
117flyInFlyOutEffect(degree: number, flyMode: FlyMode): Filter
118
119将飞入飞出形变效果添加至组件上。
120
121**系统能力:** SystemCapability.Graphics.Drawing
122
123**系统接口:** 此接口为系统接口。
124
125**参数:**
126| 参数名         | 类型                  | 必填 | 说明                       |
127| ------------- | --------------------- | ---- | ------------------------- |
128| degree  | number         | 是   | 表示控制飞入飞出形变的程度,取值范围为[0, 1]。<br/>越靠近1,变形程度越明显。<br/>超出取值范围形变不会出现效果。|
129| flyMode      | [FlyMode](#flymode) | 是   | 飞入飞出的场景模式。<br/>BOTTOM表示从设备底部飞入飞出形变场景。<br/>TOP表示从设备顶部飞入飞出形变场景。 |
130
131
132**返回值:**
133
134| 类型              | 说明                               |
135| ----------------- | --------------------------------- |
136| [Filter](#filter) | 返回挂载了飞入飞出形变效果的Filter。 |
137
138**错误码:**
139
140以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。
141
142| 错误码ID | 错误信息 |
143| ------- | -------------------------------- |
144| 202  | Permission verification failed. A non-system application calls a system API. |
145
146**示例:**
147
148```ts
149filter.flyInFlyOutEffect(0.5, uiEffect.FlyMode.TOP)
150```
151
152### distort<sup>13+</sup>
153distort(distortionK: number): Filter
154
155将透镜畸变效果添加至组件上。
156
157**系统能力:** SystemCapability.Graphics.Drawing
158
159**系统接口:** 此接口为系统接口。
160
161**参数:**
162| 参数名         | 类型                  | 必填 | 说明                       |
163| ------------- | --------------------- | ---- | ------------------------- |
164| distortionK  | number         | 是   | 畸变系数,表示透镜畸变的程度,取值范围为[-1, 1]。畸变系数设置小于-1的值时,按值为-1处理;设置大于1的值时,按值为1处理。|
165
166![zh-ch_image_Add_Distort.png](./figures/zh-ch_image_Add_Distort.png)
167如上图是对图片组件分别设置畸变参数为-1,0,0.5,1的绘制结果。畸变参数小于0时,效果为桶形畸变;大于0时,效果为枕形畸变;越接近0时,畸变程度越小,等于0时,没有畸变效果。
168
169**返回值:**
170
171| 类型              | 说明                               |
172| ----------------- | --------------------------------- |
173| [Filter](#filter) | 返回挂载了透镜畸变效果的Filter。 |
174
175**错误码:**
176
177以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
178
179| 错误码ID | 错误信息 |
180| ------- | --------------------------------------------|
181| 202 | Permission verification failed. A non-system application calls a system API. |
182
183**示例:**
184
185```ts
186filter.distort(-0.5)
187```
188
189## TileMode
190像素填充模式枚举。
191
192**系统能力:** SystemCapability.Graphics.Drawing
193
194**系统接口:** 此接口为系统接口。
195
196| 名称   | 值 | 说明 |
197| ------ | - | ---- |
198| CLAMP  | 0 | 截断。 |
199| REPEAT | 1 | 重复。 |
200| MIRROR | 2 | 镜像。 |
201| DECAL  | 3 | 透明。 |
202
203## WaterRippleMode
204水波纹场景模式枚举。
205
206**系统能力:** SystemCapability.Graphics.Drawing
207
208**系统接口:** 此接口为系统接口。
209
210| 名称   | 值 | 说明 |
211| ------ | - | ---- |
212| SMALL2MEDIUM_RECV  | 0 | 手机碰2in1设备(接收端)。 |
213| SMALL2MEDIUM_SEND  | 1 | 手机碰2in1设备(发送端)。 |
214| SMALL2SMALL | 2 | 手机碰手机。 |
215
216## FlyMode
217飞入飞出形变场景模式枚举。
218
219**系统能力:** SystemCapability.Graphics.Drawing
220
221**系统接口:** 此接口为系统接口。
222
223| 名称   | 值 | 说明 |
224| ------ | - | ---- |
225| BOTTOM  | 0 | 从底部进行飞入飞出形变。 |
226| TOP  | 1 | 从顶部进行飞入飞出形变。 |
227
228## VisualEffect
229VisualEffect效果类,用于将相应的效果添加到指定的组件上。在调用VisualEffect的方法前,需要先通过[createEffect](js-apis-uiEffect.md#uieffectcreateeffect)创建一个VisualEffect实例。
230
231### backgroundColorBlender
232backgroundColorBlender(blender: BrightnessBlender): VisualEffect
233
234将混合器添加至组件上以改变组件背景颜色,具体的更改效果由输入决定,目前仅支持提亮混合器。
235
236**系统能力:** SystemCapability.Graphics.Drawing
237
238**系统接口:** 此接口为系统接口。
239
240**参数:**
241| 参数名  | 类型                                      | 必填 | 说明                       |
242| ------- | ---------------------------------------- | ---- | ------------------------- |
243| blender | [BrightnessBlender](#brightnessblender) | 是   | 用于混合背景颜色的blender。 |
244
245**返回值:**
246
247| 类型                          | 说明                                               |
248| ----------------------------- | ------------------------------------------------- |
249| [VisualEffect](#visualeffect) | 返回添加了背景颜色更改效果的VisualEffect。 |
250
251**示例:**
252
253```ts
254let blender : uiEffect.BrightnessBlender =
255  uiEffect.createBrightnessBlender({cubicRate:1.0, quadraticRate:1.0, linearRate:1.0, degree:1.0, saturation:1.0,
256    positiveCoefficient:[2.3, 4.5, 2.0], negativeCoefficient:[0.5, 2.0, 0.5], fraction:0.0})
257visualEffect.backgroundColorBlender(blender)
258```
259
260## Blender<sup>13+</sup>
261
262type Blender = BrightnessBlender
263
264混合器类型,用于描述混合效果。
265
266**系统能力:** SystemCapability.Graphics.Drawing
267
268**系统接口:** 此接口为系统接口。
269
270| 类型                          | 说明                                               |
271| ----------------------------- | ------------------------------------------------- |
272| [BrightnessBlender](#brightnessblender) | 具有提亮效果的混合器。 |
273
274## BrightnessBlender
275提亮混合器,用于将提亮效果添加到指定的组件上。在调用BrightnessBlender前,需要先通过[createBrightnessBlender](#uieffectcreatebrightnessblender)创建一个BrightnessBlender实例。
276
277**系统能力:** SystemCapability.Graphics.Drawing
278
279**系统接口:** 此接口为系统接口。
280
281| 名称                | 类型                        | 只读 | 可选 | 说明                                                              |
282| ------------------- | -------------------------- | ---- | ---- | ---------------------------------------------------------------- |
283| cubicRate           | number                     | 否   | 否   | 灰度调整的三阶系数。<br/>取值范围[-20, 20]。                        |
284| quadraticRate       | number                     | 否   | 否   | 灰度调整的二阶系数。<br/>取值范围[-20, 20]。                        |
285| linearRate          | number                     | 否   | 否   | 灰度调整的线性系数。<br/>取值范围[-20, 20]。                        |
286| degree              | number                     | 否   | 否   | 灰度调整的比例。<br/>取值范围[-20, 20]。                            |
287| saturation          | number                     | 否   | 否   | 提亮的基准饱和度。<br/>取值范围[0, 20]。                            |
288| positiveCoefficient | [number, number, number]   | 否   | 否   | 基于基准饱和度的RGB正向调整参数。<br/>每个number的取值范围[-20, 20]。 |
289| negativeCoefficient | [number, number, number]   | 否   | 否   | 基于基准饱和度的RGB负向调整参数。<br/>每个number的取值范围[-20, 20]。 |
290| fraction            | number                     | 否   | 否   | 提亮效果的混合比例。<br/>取值范围[0, 1],超出边界会在实现时自动截断。  |
291
292## BrightnessBlenderParam
293BrightnessBlender参数列表。
294
295**系统能力:** SystemCapability.Graphics.Drawing
296
297**系统接口:** 此接口为系统接口。
298
299| 名称                | 类型                        | 只读 | 可选 | 说明                                                              |
300| ------------------- | -------------------------- | ---- | ---- | ---------------------------------------------------------------- |
301| cubicRate           | number                     | 否   | 否   | 灰度调整的三阶系数。<br/>取值范围[-20, 20]。                        |
302| quadraticRate       | number                     | 否   | 否   | 灰度调整的二阶系数。<br/>取值范围[-20, 20]。                        |
303| linearRate          | number                     | 否   | 否   | 灰度调整的线性系数。<br/>取值范围[-20, 20]。                        |
304| degree              | number                     | 否   | 否   | 灰度调整的比例。<br/>取值范围[-20, 20]。                            |
305| saturation          | number                     | 否   | 否   | 提亮的基准饱和度。<br/>取值范围[0, 20]。                            |
306| positiveCoefficient | [number, number, number]   | 否   | 否   | 基于基准饱和度的RGB正向调整参数。<br/>每个number的取值范围[-20, 20]。 |
307| negativeCoefficient | [number, number, number]   | 否   | 否   | 基于基准饱和度的RGB负向调整参数。<br/>每个number的取值范围[-20, 20]。 |
308| fraction            | number                     | 否   | 否   | 提亮效果的混合比例。<br/>取值范围[0, 1],超出边界会在实现时自动截断。  |