• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 图像效果
2
3设置组件的模糊、阴影、球面效果以及设置图片的图像效果。
4
5>  **说明:**
6>
7>  从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
8
9## blur
10
11blur(value: number, options?: BlurOptions)
12
13为组件添加内容模糊效果。
14
15**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
16
17**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
18
19**系统能力:** SystemCapability.ArkUI.ArkUI.Full
20
21**参数:**
22
23| 参数名                | 类型                                              | 必填 | 说明                                                         |
24| --------------------- | ------------------------------------------------- | ---- | ------------------------------------------------------------ |
25| value                 | number                                            | 是   | 当前组件添加内容模糊效果,入参为模糊半径,模糊半径越大越模糊,为0时不模糊。 |
26| options<sup>11+</sup> | [BlurOptions](ts-universal-attributes-foreground-blur-style.md#bluroptions11) | 否   | 灰阶梯参数。                                                 |
27
28## shadow
29
30shadow(value: ShadowOptions | ShadowStyle)
31
32为组件添加阴影效果。
33
34**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用,ArkTS卡片上不支持参数为 [ShadowStyle](ts-universal-attributes-image-effect.md#shadowstyle10枚举说明)类型。
35
36**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
37
38**系统能力:** SystemCapability.ArkUI.ArkUI.Full
39
40**参数:**
41
42| 参数名 | 类型                                                         | 必填 | 说明                                                         |
43| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
44| value  | [ShadowOptions](#shadowoptions对象说明)&nbsp;\|&nbsp;[ShadowStyle](#shadowstyle10枚举说明)<sup>10+</sup> | 是   | 为当前组件添加阴影效果。<br/>入参类型为ShadowOptions时,可以指定模糊半径、阴影的颜色、X轴和Y轴的偏移量。<br/>入参类型为ShadowStyle时,可指定不同阴影样式。 |
45
46## grayscale
47
48grayscale(value: number)
49
50为组件添加灰度效果。
51
52**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
53
54**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
55
56**系统能力:** SystemCapability.ArkUI.ArkUI.Full
57
58**参数:**
59
60| 参数名 | 类型   | 必填 | 说明                                                         |
61| ------ | ------ | ---- | ------------------------------------------------------------ |
62| value  | number | 是   | 为当前组件添加灰度效果。值定义为灰度转换的比例,入参1.0则完全转为灰度图像,入参0.0则图像无变化,入参在0.0和1.0之间时,效果呈线性变化。(百分比)<br/>默认值:0.0<br/>取值范围:[0.0, 1.0]<br/>**说明:**<br/>设置小于0.0的值时,按值为0.0处理,设置大于1.0的值时,按值为1.0处理。 |
63
64## brightness
65
66brightness(value: number)
67
68为组件添加高光效果。
69
70**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
71
72**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
73
74**系统能力:** SystemCapability.ArkUI.ArkUI.Full
75
76**参数:**
77
78| 参数名 | 类型   | 必填 | 说明                                                         |
79| ------ | ------ | ---- | ------------------------------------------------------------ |
80| value  | number | 是   | 为当前组件添加高光效果,入参为高光比例,值为1时没有效果,小于1时亮度变暗,0为全黑,大于1时亮度增加,数值越大亮度越大,亮度为2时会变为全白。<br/>默认值:1.0<br/>推荐取值范围:[0, 2]<br/>**说明:**<br/>设置小于0的值时,按值为0处理。<br/>**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。 |
81
82## saturate
83
84saturate(value: number)
85
86为组件添加饱和度效果。
87
88**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
89
90**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
91
92**系统能力:** SystemCapability.ArkUI.ArkUI.Full
93
94**参数:**
95
96| 参数名 | 类型   | 必填 | 说明                                                         |
97| ------ | ------ | ---- | ------------------------------------------------------------ |
98| value  | number | 是   | 为当前组件添加饱和度效果,饱和度为颜色中的含色成分和消色成分(灰)的比例,入参为1时,显示原图像,大于1时含色成分越大,饱和度越大,小于1时消色成分越大,饱和度越小。(百分比)<br/>默认值:1.0<br/>推荐取值范围:[0, 50)<br/>**说明:**<br/>设置小于0的值时,按值为0处理。 |
99
100## contrast
101
102contrast(value: number)
103
104为组件添加对比度效果。
105
106**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
107
108**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
109
110**系统能力:** SystemCapability.ArkUI.ArkUI.Full
111
112**参数:**
113
114| 参数名 | 类型   | 必填 | 说明                                                         |
115| ------ | ------ | ---- | ------------------------------------------------------------ |
116| value  | number | 是   | 为当前组件添加对比度效果,入参为对比度的值。值为1时,显示原图,大于1时,值越大对比度越高,图像越清晰醒目,小于1时,值越小对比度越低,当对比度为0时,图像变为全灰。(百分比)<br/>默认值:1.0<br/>推荐取值范围:[0, 10)<br/>**说明:**<br/>设置小于0的值时,按值为0处理。 |
117
118## invert
119
120invert(value: number | InvertOptions)
121
122反转输入的图像。
123
124**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
125
126**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
127
128**系统能力:** SystemCapability.ArkUI.ArkUI.Full
129
130**参数:**
131
132| 参数名 | 类型                                                         | 必填 | 说明                                                         |
133| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
134| value  | number&nbsp;\|&nbsp;[InvertOptions](#invertoptions11对象说明)<sup>11+</sup> | 是   | 反转输入的图像。<br/>入参对象为number时,入参为图像反转的比例,值为1时完全反转,值为0则图像无变化。(百分比)<br/>取值范围:[0, 1]<br/>设置小于0的值时,按值为0处理。<br/>入参对象为 InvertOptions时,对比背景颜色灰度值和阈值区间,背景颜色灰度值小于阈值区间时反色取high值,当背景颜色灰度值大于阈值区间时反色取low值,背景颜色灰度值在阈值区间内取值由high线性渐变到low。 |
135
136## sepia
137
138sepia(value: number)
139
140将图像转换为深褐色。
141
142**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
143
144**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
145
146**系统能力:** SystemCapability.ArkUI.ArkUI.Full
147
148**参数:**
149
150| 参数名 | 类型   | 必填 | 说明                                                         |
151| ------ | ------ | ---- | ------------------------------------------------------------ |
152| value  | number | 是   | 将图像转换为深褐色。入参为图像反转的比例,值为1则完全是深褐色的,值为0图像无变化。 (百分比) |
153
154## hueRotate
155
156hueRotate(value: number | string)
157
158色相旋转效果。
159
160**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
161
162**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
163
164**系统能力:** SystemCapability.ArkUI.ArkUI.Full
165
166**参数:**
167
168| 参数名 | 类型                       | 必填 | 说明                                                         |
169| ------ | -------------------------- | ---- | ------------------------------------------------------------ |
170| value  | number&nbsp;\|&nbsp;string | 是   | 色相旋转效果,输入参数为旋转角度。<br/>默认值:'0deg'<br/>取值范围:(-∞, +∞)<br/>**说明:**<br/>色调旋转360度会显示原始颜色。先将色调旋转180 度,然后再旋转-180度会显示原始颜色。数据类型为number时,值为90和'90deg'效果一致。 |
171
172## colorBlend<sup>7+</sup>
173
174colorBlend(value: Color | string | Resource)
175
176为组件添加颜色叠加效果。
177
178**系统能力:** SystemCapability.ArkUI.ArkUI.Full
179
180**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
181
182**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
183
184**参数:**
185
186| 参数名 | 类型                                                         | 必填 | 说明                                           |
187| ------ | ------------------------------------------------------------ | ---- | ---------------------------------------------- |
188| value  | [Color](ts-appendix-enums.md#color)&nbsp;\|&nbsp;string&nbsp;\|&nbsp;[Resource](ts-types.md#resource) | 是   | 为当前组件添加颜色叠加效果,入参为叠加的颜色。 |
189
190## linearGradientBlur<sup>12+</sup>
191
192linearGradientBlur(value: number, options: LinearGradientBlurOptions)
193
194为组件添加内容线性渐变模糊效果。
195
196**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
197
198**系统能力:** SystemCapability.ArkUI.ArkUI.Full
199
200**参数:**
201
202| 参数名  | 类型                                                         | 必填 | 说明                                                         |
203| ------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
204| value   | number                                                       | 是   | 为模糊半径,模糊半径越大越模糊,为0时不模糊。<br/>取值范围:[0, 60]<br/>线性梯度模糊包含两个部分fractionStops和direction。 |
205| options | [LinearGradientBlurOptions](#lineargradientbluroptions12对象说明) | 是   | 设置线性渐变模糊效果。                                       |
206
207## renderGroup<sup>10+</sup>
208
209renderGroup(value: boolean)
210
211设置当前控件和子控件是否先整体离屏渲染绘制后再与父控件融合绘制。
212
213**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
214
215**系统能力:** SystemCapability.ArkUI.ArkUI.Full
216
217**参数:**
218
219| 参数名 | 类型    | 必填 | 说明                                                         |
220| ------ | ------- | ---- | ------------------------------------------------------------ |
221| value  | boolean | 是   | 设置当前控件和子控件是否先整体离屏渲染绘制后再与父控件融合绘制。当前控件的不透明度不为1时绘制效果可能有差异。<br/>默认值:false |
222
223## blendMode<sup>11+</sup>
224
225blendMode(value: BlendMode, type?: BlendApplyType)
226
227将当前控件的内容(包含子节点内容)与下方画布(可能为离屏画布)已有内容进行混合。
228
229**卡片能力:** 从API version 11开始,该接口支持在ArkTS卡片中使用。
230
231**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
232
233**系统能力:** SystemCapability.ArkUI.ArkUI.Full
234
235**参数:**
236
237| 参数名 | 类型                            | 必填 | 说明                                                         |
238| ------ | ------------------------------- | ---- | ------------------------------------------------------------ |
239| value  | [BlendMode](#blendmode11枚举说明)  | 是   | 混合模式。<br/>默认值:BlendMode.NONE   |
240| type   | [BlendApplyType](#blendapplytype11)  |    否    | blendMode实现方式是否离屏。<br/>默认值:BlendApplyType.FAST<br/>**说明:**<br/>1. 设置BlendApplyType.FAST时,不离屏。<br/>2. 设置BlendApplyType.OFFSCREEN时,会创建当前组件大小的离屏画布,再将当前组件(含子组件)的内容绘制到离屏画布上,再用指定的混合模式与下方画布已有内容进行混合。     |
241
242## BlendApplyType<sup>11+</sup>
243
244指示如何将指定的混合模式应用于视图的内容。
245
246**卡片能力:** 从API version 11开始,该接口支持在ArkTS卡片中使用。
247
248**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
249
250**系统能力:** SystemCapability.ArkUI.ArkUI.Full
251
252| 名称           | 描述                                                             |
253| ---------------| ---------------------------------------------------------------- |
254| FAST           |   在目标图像上按顺序混合视图的内容。                        |
255| OFFSCREEN      |   将此组件和子组件内容绘制到离屏画布上,然后整体进行混合。    |
256
257## useShadowBatching<sup>11+</sup>
258
259useShadowBatching(value: boolean)
260
261控件内部子节点的阴影进行同层绘制,同层元素阴影重叠。
262
263**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
264
265**系统能力:** SystemCapability.ArkUI.ArkUI.Full
266
267**卡片能力:** 从API version 11开始,该接口支持在ArkTS卡片中使用。
268
269**参数:**
270
271| 参数名 | 类型    | 必填 | 说明                                                         |
272| ------ | ------- | ---- | ------------------------------------------------------------ |
273| value  | boolean | 是   | 控件内部子节点的阴影进行同层绘制,同层元素阴影重叠。<br/>默认值:false<br/>**说明:**<br/>1. 默认不开启,如果子节点的阴影半径较大,节点各自的阴影会互相重叠。 当开启时,元素的阴影将不会重叠。<br/>2. 不推荐useShadowBatching嵌套使用,如果嵌套使用,只会对当前的子节点生效,无法递推。 |
274
275## sphericalEffect<sup>12+</sup>
276
277sphericalEffect(value: number)
278
279设置组件的图像球面化程度。
280
281**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
282
283**系统能力:** SystemCapability.ArkUI.ArkUI.Full
284
285**参数:**
286
287| 参数名 | 类型   | 必填 | 说明                                                         |
288| ------ | ------ | ---- | ------------------------------------------------------------ |
289| value  | number | 是   | 设置组件的图像球面化程度。<br/>取值范围:[0,1]。<br/>**说明:**<br/>1. 如果value等于0则图像保持原样,如果value等于1则图像为完全球面化效果。在0和1之间,数值越大,则球面化程度越高。<br/>`value < 0 `或者` value > 1`为异常情况,`value < 0`按0处理,`value > 1`按1处理。<br/>2. 组件阴影和外描边不支持球面效果。<br>3. 设置value大于0时,组件冻屏不更新并且把组件内容绘制到透明离屏buffer上,如果要更新组件属性则需要把value设置为0。 |
290
291## lightUpEffect<sup>12+</sup>
292
293lightUpEffect(value: number)
294
295设置组件图像亮起程度。
296
297**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
298
299**系统能力:** SystemCapability.ArkUI.ArkUI.Full
300
301**参数:**
302
303| 参数名 | 类型   | 必填 | 说明                                                         |
304| ------ | ------ | ---- | ------------------------------------------------------------ |
305| value  | number | 是   | 设置组件图像亮起程度。<br/>取值范围:[0,1]。<br/>如果value等于0则图像为全黑,如果value等于1则图像为全亮效果。0到1之间数值越大,表示图像亮度越高。`value < 0` 或者 `value > 1`为异常情况,`value < 0`按0处理,`value > 1`按1处理。 |
306
307## pixelStretchEffect<sup>12+</sup>
308
309pixelStretchEffect(options: PixelStretchEffectOptions)
310
311设置组件的图像边缘像素扩展距离。
312
313**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
314
315**系统能力:** SystemCapability.ArkUI.ArkUI.Full
316
317**参数:**
318
319| 参数名  | 类型                                                         | 必填 | 说明                                                         |
320| ------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
321| options | [PixelStretchEffectOptions](#pixelstretcheffectoptions10) | 是   | 设置组件的图像边缘像素扩展距离。<br/>参数`options`包括上下左右四个方向的边缘像素扩展距离。<br/>**说明:**<br/>1. 如果距离为正值,表示向外扩展,放大原来图像大小。上下左右四个方向分别用边缘像素填充,填充的距离即为设置的边缘扩展的距离。<br/>2. 如果距离为负值,表示内缩,但是最终图像大小不变。<br/>内缩方式:<br/>图像根据`options`的设置缩小,缩小大小为四个方向边缘扩展距离的绝对值。<br/>图像用边缘像素扩展到原来大小。<br/>3. 对`options`的输入约束:<br/>上下左右四个方向的扩展统一为非正值或者非负值。即四个边同时向外扩或者内缩,方向一致。<br/>所有方向的输入均为百分比或者具体值,不支持百分比和具体值混用。<br/>所有异常情况下,显示为{0,0,0,0}效果,即跟原图保持一致。 |
322
323## PixelStretchEffectOptions<sup>10+</sup>
324
325像素扩展属性集合,用于描述像素扩展的信息。
326
327**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
328
329**系统能力:** SystemCapability.ArkUI.ArkUI.Full
330
331| 名称     | 类型                | 必填   | 说明             |
332| ------ | ----------------- | ---- | -------------- |
333| left   | [Length](ts-types.md#length) | 否    | 组件图像左边沿像素扩展距离。 |
334| right  | [Length](ts-types.md#length) | 否    | 组件图像右边沿像素扩展距离。 |
335| top    | [Length](ts-types.md#length) | 否    | 组件图像上边沿像素扩展距离。 |
336| bottom | [Length](ts-types.md#length) | 否    | 组件图像下边沿像素扩展距离。 |
337
338## systemBarEffect<sup>12+</sup>
339
340systemBarEffect()
341
342根据背景进行智能反色并且带有模糊效果。
343
344**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
345
346**系统能力:** SystemCapability.ArkUI.ArkUI.Full
347
348## ShadowType<sup>10+<sup>
349
350**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
351
352**系统能力:** SystemCapability.ArkUI.ArkUI.Full
353
354| 名称       | 描述                                   |
355| -------- | ---------------------------------------- |
356| COLOR    | 颜色。                                    |
357| BLUR     | 模糊。                                    |
358
359
360## ShadowOptions对象说明
361
362阴影属性集合,用于设置阴影的模糊半径、阴影的颜色、X轴和Y轴的偏移量。
363
364
365**系统能力:** SystemCapability.ArkUI.ArkUI.Full
366
367**卡片能力:** 从API version 9开始,该接口支持在ArkTS卡片中使用。
368
369| 名称      | 类型                                       | 必填   | 说明                                       |
370| ------- | ---------------------------------------- | ---- | ---------------------------------------- |
371| radius  | number \| [Resource](ts-types.md#resource) | 是    | 阴影模糊半径。<br/>取值范围:[0, +∞)<br/>单位:px<br/>**说明:**  <br/>设置小于0的值时,按值为0处理。<br/>如需使用vp单位的数值可用[vp2px](ts-pixel-units.md#像素单位转换)进行转换。<br/>如果radius为Resource类型,则传入的值需为number类型。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
372| type<sup>10+</sup> | [ShadowType<sup>10+</sup>](#shadowtype10)  |      否    | 阴影类型。<br/>默认为COLOR。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。       |
373| color   | [Color](ts-appendix-enums.md#color) \| string \| [Resource](ts-types.md#resource)\| [ColoringStrategy<sup>10+</sup> ](ts-types.md#coloringstrategy10) | 否    | 阴影的颜色。<br/>默认为黑色。 <br/>**说明:** <br/>从API version 11开始,该接口支持使用ColoringStrategy实现智能取色,智能取色功能不支持在ArkTS卡片、[textShadow](ts-basic-components-text.md#textshadow10)中使用。<br/>当前仅支持平均取色和主色取色,智能取色区域为shadow绘制区域。<br/>支持使用'average'字符串触发智能平均取色模式,支持使用'primary'字符串触发智能主色模式。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
374| offsetX | number \| [Resource](ts-types.md#resource) | 否    | 阴影的X轴偏移量。<br/>默认值:0<br/>单位:px<br/>**说明:** <br/>如需使用vp单位的数值可用[vp2px](ts-pixel-units.md#像素单位转换)进行转换。<br/>如果offsetX为Resource类型,则传入的值需为number类型。<br/> **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
375| offsetY | number \| [Resource](ts-types.md#resource) | 否    | 阴影的Y轴偏移量。<br/>默认值:0<br/>单位:px<br/>**说明:** <br/>如需使用vp单位的数值可用[vp2px](ts-pixel-units.md#像素单位转换)进行转换。<br/>如果offsetY为Resource类型,则传入的值需为number类型。<br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。|
376| fill<sup>11+</sup>     | boolean                                    | 否    | 阴影是否内部填充。<br/>默认为false。<br/>**说明:**<br/>[textShadow](ts-basic-components-text.md#textshadow10)中该字段不生效。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
377
378## ShadowStyle<sup>10+</sup>枚举说明
379
380**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
381
382| 名称                | 描述     |
383| ----------------- | ------ |
384| OUTER_DEFAULT_XS  | 超小阴影。  |
385| OUTER_DEFAULT_SM  | 小阴影。   |
386| OUTER_DEFAULT_MD  | 中阴影。   |
387| OUTER_DEFAULT_LG  | 大阴影。   |
388| OUTER_FLOATING_SM | 浮动小阴影。 |
389| OUTER_FLOATING_MD | 浮动中阴影。 |
390
391## BlendMode<sup>11+</sup>枚举说明
392
393>  **说明:**
394>
395>  blendMode枚举中,s表示源像素,d表示目标像素,sa表示原像素透明度,da表示目标像素透明度,r表示混合后像素,ra表示混合后像素透明度。
396
397**卡片能力:** 从API version 11开始,该接口支持在ArkTS卡片中使用。
398
399**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
400
401| 名称           | 描述                                                             |
402| ---------------| ------                                                        |
403| NONE            | 将上层图像直接覆盖到下层图像上,不进行任何混合操作。              |
404| CLEAR           | 将源像素覆盖的目标像素清除为完全透明。                      |
405| SRC             | r = s,只显示源像素。                    |
406| DST             | r = d,只显示目标像素。                  |
407| SRC_OVER        | r = s + (1 - sa) * d,将源像素按照透明度进行混合,覆盖在目标像素上。                 |
408| DST_OVER        | r = d + (1 - da) * s,将目标像素按照透明度进行混合,覆盖在源像素上。                 |
409| SRC_IN          | r = s * da,只显示源像素中与目标像素重叠的部分。                        |
410| DST_IN          | r = d * sa,只显示目标像素中与源像素重叠的部分。                        |
411| SRC_OUT         | r = s * (1 - da),只显示源像素中与目标像素不重叠的部分。                |
412| DST_OUT         | r = d * (1 - sa),只显示目标像素中与源像素不重叠的部分。                |
413| SRC_ATOP        | r = s * da + d * (1 - sa),在源像素和目标像素重叠的地方绘制源像素,在源像素和目标像素不重叠的地方绘制目标像素。                 |
414| DST_ATOP        | r = d * sa + s * (1 - da),在源像素和目标像素重叠的地方绘制目标像素,在源像素和目标像素不重叠的地方绘制源像素。                 |
415| XOR             | r = s * (1 - da) + d * (1 - sa),只显示源像素与目标像素不重叠的部分。                     |
416| PLUS            | r = min(s + d, 1),将源像素值与目标像素值相加,并将结果作为新的像素值。                     |
417| MODULATE        | r = s * d,将源像素与目标像素进行乘法运算,并将结果作为新的像素值。                          |
418| SCREEN          | r = s + d - s * d,将两个图像的像素值相加,然后减去它们的乘积来实现混合。                    |
419| OVERLAY         | 根据目标像素来决定使用MULTIPLY混合模式还是SCREEN混合模式。                                  |
420| DARKEN          | rc = s + d - max(s * da, d * sa), ra = kSrcOver,当两个颜色重叠时,较暗的颜色会覆盖较亮的颜色。                 |
421| LIGHTEN         | rc = s + d - min(s * da, d * sa), ra = kSrcOver,将源图像和目标图像中的像素进行比较,选取两者中较亮的像素作为最终的混合结果。            |
422| COLOR_DODGE     | 使目标像素变得更亮来反映源像素。                     |
423| COLOR_BURN      | 使目标像素变得更暗来反映源像素。                     |
424| HARD_LIGHT      | 根据源像素的值来决定目标像素变得更亮或者更暗。根据源像素来决定使用MULTIPLY混合模式还是SCREEN混合模式。                  |
425| SOFT_LIGHT      | 根据源像素来决定使用LIGHTEN混合模式还是DARKEN混合模式。                                                             |
426| DIFFERENCE      | rc = s + d - 2 * (min(s * da, d * sa)), ra = kSrcOver,对比源像素和目标像素,亮度更高的像素减去亮度更低的像素,产生高对比度的效果。                      |
427| EXCLUSION       | rc = s + d - two(s * d), ra = kSrcOver,对比源像素和目标像素,亮度更高的像素减去亮度更低的像素,产生柔和的效果。          |
428| MULTIPLY        | r = s * (1 - da) + d * (1 - sa) + s * d,将源图像与目标图像进行乘法混合,得到一张新的图像。                           |
429| HUE             | 保留源图像的亮度和饱和度,但会使用目标图像的色调来替换源图像的色调。                                   |
430| SATURATION      | 保留目标像素的亮度和色调,但会使用源像素的饱和度来替换目标像素的饱和度。                                |
431| COLOR           | 保留源像素的饱和度和色调,但会使用目标像素的亮度来替换源像素的亮度。                                   |
432| LUMINOSITY      | 保留目标像素的色调和饱和度,但会用源像素的亮度替换目标像素的亮度。                                     |
433
434## LinearGradientBlurOptions<sup>12+</sup>对象说明
435
436**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
437
438| 名称          | 类型                                                        | 必填  | 说明                                                         |
439| ------------- | ----------------------------------------------------------- | ----- | ------------------------------------------------------------ |
440| fractionStops | Array\<[FractionStop](#fractionstop12)>                                    | 是    | 数组中保存的每一个二元数组(取值0-1,小于0则为0,大于1则为1)表示[模糊程度, 模糊位置];模糊位置需严格递增,开发者传入的数据不符合规范会记录日志,渐变模糊数组中二元数组个数必须大于等于2,否则渐变模糊不生效。 |
441| direction     | [GradientDirection](ts-appendix-enums.md#gradientdirection) | 是    | 渐变模糊方向。<br/>默认值:<br/>GradientDirection.Bottom |
442
443## FractionStop<sup>12+</sup>
444
445FractionStop = [ number, number ]
446
447定义模糊段。
448
449**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
450
451**系统能力:** SystemCapability.ArkUI.ArkUI.Full
452
453| 取值范围       | 说明                                                       |
454| ------------- | ---------------------------------------------------------- |
455| number        |   分数,值1表示不透明,0表示完全透明。<br/>取值范围:[0,1]      |
456| number        |   停止位置,值1表示区域结束位置,0表示区域开始位置。<br/> 取值范围:[0,1] |
457
458## InvertOptions<sup>11+</sup>对象说明
459
460前景智能取反色。
461
462**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
463
464| 名称            |  类型  | 必填  | 说明                                       |
465| -------------- | ------ | ----- | ------------------------------------------ |
466| low            | number | 是    | 背景颜色灰度值大于阈值区间时的取值。                  |
467| high           | number | 是    | 背景颜色灰度值小于阈值区间时的取值。              |
468| threshold      | number | 是    | 灰度阈值。                                  |
469| thresholdRange | number | 是    | 阈值范围。<br/>**说明:**<br/>灰度阈值上下偏移thresholdRange构成阈值区间,背景颜色灰度值在区间内取值由high线性渐变到low。|
470
471## freeze<sup>12+</sup>
472
473freeze(value: boolean)
474
475设置当前控件和子控件是否整体离屏渲染绘制后重复绘制缓存,不再进行内部属性更新。
476
477**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
478
479**系统能力:** SystemCapability.ArkUI.ArkUI.Full
480
481**参数:**
482
483| 参数名 | 类型    | 必填 | 说明                                                         |
484| ------ | ------- | ---- | ------------------------------------------------------------ |
485| value  | boolean | 是   | 设置当前控件和子控件是否整体离屏渲染绘制后重复绘制缓存,不再进行内部属性更新。当前控件的不透明度不为1时绘制效果可能有差异。<br/>默认值:false |
486
487## 示例
488
489
490
491### 示例1
492设置图片的效果,包括阴影,灰度,高光,饱和度,对比度,图像反转,叠色,色相旋转等。
493```ts
494// xxx.ets
495@Entry
496@Component
497struct ImageEffectsExample {
498  build() {
499    Column({ space: 5 }) {
500      // 添加阴影效果,图片效果不变
501      Text('shadow').fontSize(15).fontColor(0xCCCCCC).width('90%')
502      Image($r('app.media.image'))
503        .width('90%')
504        .height(30)
505        .shadow({ radius: 10, color: Color.Green, offsetX: 20, offsetY: 20 })
506
507      // 添加内部阴影效果
508      Text('shadow').fontSize(15).fontColor(0xCCCCCC).width('90%')
509      Image($r('app.media.image'))
510        .width('90%')
511        .height(30)
512        .shadow({ radius: 5, color: Color.Green, offsetX: 20, offsetY: 20,fill:true }).opacity(0.5)
513
514      // 灰度效果0~1,越接近1,灰度越明显
515      Text('grayscale').fontSize(15).fontColor(0xCCCCCC).width('90%')
516      Image($r('app.media.image')).width('90%').height(30).grayscale(0.3)
517      Image($r('app.media.image')).width('90%').height(30).grayscale(0.8)
518
519      // 高光效果,1为正常图片,<1变暗,>1亮度增大
520      Text('brightness').fontSize(15).fontColor(0xCCCCCC).width('90%')
521      Image($r('app.media.image')).width('90%').height(30).brightness(1.2)
522
523      // 饱和度,原图为1
524      Text('saturate').fontSize(15).fontColor(0xCCCCCC).width('90%')
525      Image($r('app.media.image')).width('90%').height(30).saturate(2.0)
526      Image($r('app.media.image')).width('90%').height(30).saturate(0.7)
527
528      // 对比度,1为原图,>1值越大越清晰,<1值越小越模糊
529      Text('contrast').fontSize(15).fontColor(0xCCCCCC).width('90%')
530      Image($r('app.media.image')).width('90%').height(30).contrast(2.0)
531      Image($r('app.media.image')).width('90%').height(30).contrast(0.8)
532
533      // 图像反转比例
534      Text('invert').fontSize(15).fontColor(0xCCCCCC).width('90%')
535      Image($r('app.media.image')).width('90%').height(30).invert(0.2)
536      Image($r('app.media.image')).width('90%').height(30).invert(0.8)
537
538      // 叠色添加
539      Text('colorBlend').fontSize(15).fontColor(0xCCCCCC).width('90%')
540      Image($r('app.media.image')).width('90%').height(30).colorBlend(Color.Green)
541      Image($r('app.media.image')).width('90%').height(30).colorBlend(Color.Blue)
542
543      // 深褐色
544      Text('sepia').fontSize(15).fontColor(0xCCCCCC).width('90%')
545      Image($r('app.media.image')).width('90%').height(30).sepia(0.8)
546
547      // 色相旋转
548      Text('hueRotate').fontSize(15).fontColor(0xCCCCCC).width('90%')
549      Image($r('app.media.image')).width('90%').height(30).hueRotate(90)
550    }.width('100%').margin({ top: 5 })
551  }
552}
553```
554
555![imageeffect](figures/imageeffect.png)
556
557
558### 示例2
559
560设置组件的内容线性渐变模糊效果。
561
562```ts
563// xxx.ets
564@Entry
565@Component
566struct ImageExample1 {
567  private_resource1:Resource = $r('app.media.testlinearGradientBlurOrigin')
568  @State image_src: Resource = this.private_resource1
569  build() {
570    Column() {
571      Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start }) {
572        Row({ space: 5 }) {
573          Image(this.image_src)
574            .linearGradientBlur(60, { fractionStops: [[0,0],[0,0.33],[1,0.66],[1,1]], direction: GradientDirection.Bottom })
575        }
576      }
577    }
578  }
579}
580
581```
582
583![testlinearGradientBlur](figures/testlinearGradientBlur.png)
584
585### 示例3
586renderGroup示例
587```ts
588// xxx.ets
589@Component
590struct Component1 {
591  @Prop renderGroupValue: boolean;
592  build() {
593    Row() {
594      Row() {
595        Row()
596          .backgroundColor(Color.Black)
597          .width(100)
598          .height(100)
599          .opacity(1)
600      }
601      .backgroundColor(Color.White)
602      .width(150)
603      .height(150)
604      .justifyContent(FlexAlign.Center)
605      .opacity(0.6)
606      .renderGroup(this.renderGroupValue)
607    }
608    .backgroundColor(Color.Black)
609    .width(200)
610    .height(200)
611    .justifyContent(FlexAlign.Center)
612    .opacity(1)
613  }
614}
615@Entry
616@Component
617struct RenderGroupExample {
618  build() {
619    Column() {
620      Component1({renderGroupValue: true})
621        .margin(20)
622      Component1({renderGroupValue: false})
623        .margin(20)
624    }
625    .width("100%")
626    .height("100%")
627    .alignItems(HorizontalAlign.Center)
628  }
629}
630```
631
632![renderGroup](figures/renderGroup.png)
633
634### 示例4
635单独使用blendMode
636```ts
637// xxx.ets
638@Entry
639@Component
640struct Index {
641  build() {
642    Column() {
643      Text("blendMode")
644        .fontSize(20)
645        .fontWeight(FontWeight.Bold)
646        .fontColor('#ffff0101')
647      Row() {
648        Circle()
649          .width(200)
650          .height(200)
651          .fill(Color.Green)
652          .position({ x: 50, y: 50 })
653        Circle()
654          .width(200)
655          .height(200)
656          .fill(Color.Blue)
657          .position({ x: 150, y: 50 })
658      }
659      .blendMode(BlendMode.OVERLAY,BlendApplyType.OFFSCREEN)
660      .alignItems(VerticalAlign.Center)
661      .height(300)
662      .width('100%')
663    }
664    .height('100%')
665    .width('100%')
666    .backgroundImage($r('app.media.image'))
667    .backgroundImageSize(ImageSize.Cover)
668  }
669}
670```
671
672<br/>BlendMode.OVERLAY,BlendApplyType.OFFSCREEN<br/>
673![zh-cn_image_effect_blendMode2](figures/zh-cn_image_effect_blendMode.png)
674<br/>不同的混合模式搭配是否需要离屏从而产生不同的效果。
675
676### 示例5
677通过 InvertOptions 实现反色。
678```ts
679// xxx.ets
680 @Entry
681 @Component
682 struct Index {
683   build() {
684    Stack() {
685      Column()
686        Stack(){
687          Image($r('app.media.r')).width('100%')
688         Column(){
689           Column().width("100%").height(30).invert({
690             low:0,
691             high:1,
692             threshold:0.5,
693             thresholdRange:0.2
694           })
695           Column().width("100%").height(30).invert({
696             low:0.2,
697             high:0.5,
698             threshold:0.3,
699             thresholdRange:0.2
700           })
701         }
702        }
703        .width('100%')
704        .height('100%')
705    }
706  }
707 }
708
709```
710
711![testDestinationIn_lockDemo](figures/testInvertOptions.png)
712
713### 示例6
714useShadowBatching搭配shadow实现同层阴影不重叠效果。
715```ts
716// xxx.ets
717@Entry
718@Component
719struct UseShadowBatchingExample {
720  build() {
721    Column() {
722      Column({ space: 10 }) {
723        Stack() {
724
725        }.width('90%').height(50).margin({ top: 5 }).backgroundColor(0xFFE4C4)
726        .shadow({ radius: 120, color: Color.Green, offsetX: 0, offsetY: 0 })
727        .align(Alignment.TopStart).shadow({ radius: 120, color: Color.Green, offsetX: 0, offsetY: 0 })
728
729        Stack() {
730
731        }.width('90%').height(50).margin({ top: 5 }).backgroundColor(0xFFE4C4)
732        .align(Alignment.TopStart).shadow({ radius: 120, color: Color.Red, offsetX: 0, offsetY: 0 })
733        .width('90%')
734        .backgroundColor(Color.White)
735
736        Column() {
737          Text()
738            .fontWeight(FontWeight.Bold)
739            .fontSize(20)
740            .fontColor(Color.White)
741        }
742        .justifyContent(FlexAlign.Center)
743        .width(150)
744        .height(150)
745        .borderRadius(10)
746        .backgroundColor(0xf56c6c)
747        .shadow({ radius: 300, color: Color.Yellow, offsetX: 0, offsetY: 0 })
748
749        Column() {
750          Text()
751            .fontWeight(FontWeight.Bold)
752            .fontSize(20)
753            .fontColor(Color.White)
754        }
755        .justifyContent(FlexAlign.Center)
756        .width(150)
757        .height(150)
758        .backgroundColor(0x67C23A)
759        .borderRadius(10)
760        .translate({ y: -50})
761        .shadow({ radius: 220, color: Color.Blue, offsetX: 0, offsetY: 0 })
762      }
763      .useShadowBatching(true)
764    }
765    .width('100%').margin({ top: 5 })
766  }
767}
768```
769
770![testUseShadowBatchingDemo](figures/testUseShadowBatching.png)
771
772### 示例7
773
774设置组件的图像球面效果。
775
776```ts
777// xxx.ets
778@Entry
779@Component
780struct SphericalEffectExample {
781  build() {
782    Stack() {
783      TextInput({ placeholder: "请输入变化范围百分比([0%,100%])"})
784        .width('50%')
785        .height(35)
786        .type(InputType.Number)
787        .enterKeyType(EnterKeyType.Done)
788        .caretColor(Color.Red)
789        .placeholderColor(Color.Blue)
790        .placeholderFont({
791          size: 20,
792          style: FontStyle.Italic,
793          weight: FontWeight.Bold
794        })
795        .sphericalEffect(0.5)
796    }.alignContent(Alignment.Center).width("100%").height("100%")
797  }
798}
799
800```
801
802效果图如下:
803
804![textInputSpherical1](figures/textInputSpherical1.png)
805
806去掉sphericalEffect的设置,效果如下:
807
808![textInputSpherical2](figures/textInputSpherical2.png)
809
810### 示例8
811
812设置组件的图像渐亮效果。
813
814```ts
815// xxx.ets
816@Entry
817@Component
818struct LightUpExample {
819  build() {
820    Stack() {
821      Text('This is the text content with letterSpacing 0.')
822        .letterSpacing(0)
823        .fontSize(12)
824        .border({ width: 1 })
825        .padding(10)
826        .width('50%')
827        .lightUpEffect(0.6)
828    }.alignContent(Alignment.Center).width("100%").height("100%")
829  }
830}
831
832```
833
834效果图如下:
835
836![textLightUp3](figures/textLightUp3.png)
837
838修改lightUpEffect参数值为0.2:
839
840![textLightUp2](figures/textLightUp2.png)
841
842去掉lightUpEffect的设置,效果如下:
843
844![textLightUp1](figures/textLightUp1.png)
845
846### 示例9
847
848设置组件的图像边缘像素扩展效果。
849
850```ts
851// xxx.ets
852@Entry
853@Component
854struct PixelStretchExample {
855  build() {
856    Stack() {
857      Text('This is the text content with letterSpacing 0.')
858        .letterSpacing(0)
859        .fontSize(12)
860        .border({ width: 1 })
861        .padding(10)
862        .clip(false)
863        .width('50%')
864        .pixelStretchEffect({top:10,left:10,right:10,bottom:10 })
865    }.alignContent(Alignment.Center).width("100%").height("100%")
866  }
867}
868
869```
870
871效果图如下:
872
873![textPixelStretch1](figures/textPixelStretch1.png)
874
875去掉pixelStretchEffect的设置,原图效果如下:
876
877![textPixelStretch2](figures/textPixelStretch2.png)
878
879
880### 示例10
881
882系统导航条智能反色
883
884```ts
885// xxx.ets
886@Entry
887@Component
888struct Index {
889  build() {
890    Column() {
891      Stack(){
892        Image($r('app.media.testImage')).width('100%').height('100%')
893         Column().width(150).height(10)
894          .systemBarEffect()
895           .border({radius:5})
896           .margin({bottom:80})
897      }.alignContent(Alignment.Center)
898    }
899  }
900}
901
902```
903
904效果图如下:
905
906![systemBarEffect](figures/systemBarEffect.png)