ts-universal-attributes-image-effect.md 8.0 KB
Newer Older
Z
zengyawen 已提交
1
# 图像效果
Z
zengyawen 已提交
2

S
sienna1128 已提交
3
设置组件的模糊,阴影效果以及设置图片的图像效果。
T
explain  
tianyu 已提交
4

H
geshi  
HelloCrease 已提交
5
>  **说明:**
6
>
H
HelloCrease 已提交
7
>  从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
Z
zengyawen 已提交
8

Z
zengyawen 已提交
9 10 11 12

## 属性


G
gmy 已提交
13 14 15 16
| 名称                          | 参数类型                                                     | 默认值 | 描述                                                         |
| ----------------------------- | ------------------------------------------------------------ | ------ | ------------------------------------------------------------ |
| blur                          | number                                                       | -      | 为当前组件添加内容模糊效果,入参为模糊半径,模糊半径越大越模糊,为0时不模糊。 |
| backdropBlur                  | number                                                       | -      | 为当前组件添加背景模糊效果,入参为模糊半径,模糊半径越大越模糊,为0时不模糊。 |
17
| shadow                        | [ShadowOptions](#shadowoptions对象说明) \| [ShadowStyle](#shadowstyle10枚举说明) | -      | 为当前组件添加阴影效果。<br/>入参类型为ShadowOptions时,可以指定模糊半径、阴影的颜色、X轴和Y轴的偏移量。<br/>入参类型为ShadowStyle时,可指定不同阴影样式。|
G
gmy 已提交
18 19 20 21 22 23
| grayscale                     | number                                                       | 0.0    | 为当前组件添加灰度效果。值定义为灰度转换的比例,入参1.0则完全转为灰度图像,入参则0.0图像无变化,入参在0.0和1.0之间时,效果呈线性变化。(百分比) |
| brightness                    | number                                                       | 1.0    | 为当前组件添加高光效果,入参为高光比例,值为1时没有效果,小于1时亮度变暗,0为全黑;大于1时亮度增加,数值越大亮度越大。 |
| saturate                      | number                                                       | 1.0    | 为当前组件添加饱和度效果,饱和度为颜色中的含色成分和消色成分(灰)的比例,入参为1时,显示原图像,大于1时含色成分越大,饱和度越大;小于1时消色成分越大,饱和度越小。(百分比) |
| contrast                      | number                                                       | 1.0    | 为当前组件添加对比度效果,入参为对比度的值,值为1时,显示原图;大于1时,值越大对比度越高,图像越清晰醒目;小于1时,值越小对比度越低;当对比度为0时,图像变为全灰。(百分比) |
| invert                        | number                                                       | 0      | 反转输入的图像。入参为图像反转的比例。值为1时完全反转。值为0则图像无变化。(百分比) |
| sepia                         | number                                                       | 0      | 将图像转换为深褐色。入参为图像反转的比例。值为1则完全是深褐色的,值为0图像无变化。&nbsp;(百分比) |
S
sienna1128 已提交
24
| hueRotate                     | number&nbsp;\|&nbsp;string                                   | '0deg' | 色相旋转效果,输入参数为旋转角度。                           |
M
matchzhou 已提交
25
| colorBlend&nbsp;<sup>8+</sup> | [Color](ts-appendix-enums.md#color)&nbsp;\|&nbsp;string&nbsp;\|&nbsp;[Resource](ts-types.md#resource) | -      | 为当前组件添加颜色叠加效果,入参为叠加的颜色。               |
Z
zengyawen 已提交
26

27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
## ShadowOptions对象说明

阴影属性集合,用于设置阴影的模糊半径、阴影的颜色、X轴和Y轴的偏移量。

| 名称     | 类型     | 必填   | 说明              |
| ------ | ------ | ---- | --------------- |
| radius    | number \| [Resource](ts-types.md#resource)  | 是    | 阴影模糊半径。  |
| color  | [Color](ts-appendix-enums.md#color) \| string \| [Resource](ts-types.md#resource)  | 否    | 阴影的颜色。<br/>默认为灰色。 |
| offsetX | number \| [Resource](ts-types.md#resource)  | 否    | 阴影的X轴偏移量。<br/>默认为0。  |
| offsetY   | number \| [Resource](ts-types.md#resource)  | 否    | 阴影的Y轴偏移量。<br/>默认为0。 |

## ShadowStyle<sup>10+</sup>枚举说明

| 名称   | 描述                                   |
| ------ | -------------------------------------- |
| OuterDefaultXS  | 超小阴影。 |
| OuterDefaultSM | 小阴影。 |
| OuterDefaultMD    | 中阴影。 |
| OuterDefaultLG    | 大阴影。 |
| OuterFloatingSM    | 浮动小阴影。 |
| OuterFloatingMD    | 浮动中阴影。 |

Z
zengyawen 已提交
49
## 示例
Z
zengyawen 已提交
50

S
sienna1128 已提交
51
### 示例1
S
sienna1128 已提交
52
模糊属性的用法,blur内容模糊,backdropBlur背景模糊。
H
geshi  
HelloCrease 已提交
53 54
```ts
// xxx.ets
Z
zengyawen 已提交
55 56
@Entry
@Component
S
sienna1128 已提交
57
struct BlurEffectsExample {
Z
zengyawen 已提交
58
  build() {
S
sienna1128 已提交
59
    Column({ space: 10 }) {
Y
yamila 已提交
60
      // 对字体进行模糊
Z
zengyawen 已提交
61
      Text('font blur').fontSize(15).fontColor(0xCCCCCC).width('90%')
S
sienna1128 已提交
62 63 64 65 66 67 68 69 70 71 72
      Flex({ alignItems: ItemAlign.Center }) {
        Text('original text').margin(10)
        Text('blur text')
          .blur(1).margin(10)
        Text('blur text')
          .blur(2).margin(10)
        Text('blur text')
          .blur(3).margin(10)
      }.width('90%').height(40)
      .backgroundColor(0xF9CF93)

Z
zengyawen 已提交
73 74 75

      // 对背景进行模糊
      Text('backdropBlur').fontSize(15).fontColor(0xCCCCCC).width('90%')
S
sienna1128 已提交
76 77 78 79 80 81
      Text()
        .width('90%')
        .height(40)
        .fontSize(16)
        .backdropBlur(3)
        .backgroundImage('/pages/attrs/image/image.jpg')
Z
zengyawen 已提交
82
        .backgroundImageSize({ width: 1200, height: 160 })
S
sienna1128 已提交
83 84 85 86 87
    }.width('100%').margin({ top: 5 })
  }
}
```

S
sienna1128 已提交
88
![textblur](figures/textblur.png)
Z
zengyawen 已提交
89

S
sienna1128 已提交
90
### 示例2
S
sienna1128 已提交
91
设置图片的效果,包括阴影,灰度,高光,饱和度,对比度,图像反转,叠色,色相旋转等。
S
sienna1128 已提交
92 93 94 95
```ts
// xxx.ets
@Entry
@Component
S
sienna1128 已提交
96
struct ImageEffectsExample {
S
sienna1128 已提交
97 98 99
  build() {
    Column({ space: 10 }) {
      // 添加阴影效果,图片效果不变
Z
zengyawen 已提交
100
      Text('shadow').fontSize(15).fontColor(0xCCCCCC).width('90%')
S
sienna1128 已提交
101 102 103 104
      Image($r('app.media.image'))
        .width('90%')
        .height(40)
        .shadow({ radius: 10, color: Color.Green, offsetX: 20, offsetY: 30 })
Z
zengyawen 已提交
105

S
sienna1128 已提交
106
      // 灰度效果0~1,越接近1,灰度越明显
Z
zengyawen 已提交
107
      Text('grayscale').fontSize(15).fontColor(0xCCCCCC).width('90%')
S
sienna1128 已提交
108 109 110
      Image($r('app.media.image')).width('90%').height(40).grayscale(0.3)
      Image($r('app.media.image')).width('90%').height(40).grayscale(0.8)

S
sienna1128 已提交
111
      // 高光效果,1为正常图片,<1变暗,>1亮度增大
Z
zengyawen 已提交
112
      Text('brightness').fontSize(15).fontColor(0xCCCCCC).width('90%')
S
sienna1128 已提交
113 114
      Image($r('app.media.image')).width('90%').height(40).brightness(1.2)

S
sienna1128 已提交
115
      // 饱和度,原图为1
Z
zengyawen 已提交
116
      Text('saturate').fontSize(15).fontColor(0xCCCCCC).width('90%')
S
sienna1128 已提交
117
      Image($r('app.media.image')).width('90%').height(40).saturate(2.0)
S
sienna1128 已提交
118
      Image($r('app.media.image')).width('90%').height(40).saturate(0.7)
Z
zengyawen 已提交
119

S
sienna1128 已提交
120
      // 对比度,1为原图,>1值越大越清晰,<1值越小越模糊
Z
zengyawen 已提交
121
      Text('contrast').fontSize(15).fontColor(0xCCCCCC).width('90%')
S
sienna1128 已提交
122
      Image($r('app.media.image')).width('90%').height(40).contrast(2.0)
S
sienna1128 已提交
123
      Image($r('app.media.image')).width('90%').height(40).contrast(0.8)
Z
zengyawen 已提交
124

S
sienna1128 已提交
125
      // 图像反转比例
Z
zengyawen 已提交
126
      Text('invert').fontSize(15).fontColor(0xCCCCCC).width('90%')
S
sienna1128 已提交
127 128
      Image($r('app.media.image')).width('90%').height(40).invert(0.2)
      Image($r('app.media.image')).width('90%').height(40).invert(0.8)
S
sienna1128 已提交
129 130 131 132 133

      // 叠色添加
      Text('colorBlend').fontSize(15).fontColor(0xCCCCCC).width('90%')
      Image($r('app.media.image')).width('90%').height(40).colorBlend(Color.Green)
      Image($r('app.media.image')).width('90%').height(40).colorBlend(Color.Blue)
Z
zengyawen 已提交
134

S
sienna1128 已提交
135 136
      // 深褐色
      Text('sepia').fontSize(15).fontColor(0xCCCCCC).width('90%')
S
sienna1128 已提交
137
      Image($r('app.media.image')).width('90%').height(40).sepia(0.8)
S
sienna1128 已提交
138 139

      // 色相旋转
Z
zengyawen 已提交
140
      Text('hueRotate').fontSize(15).fontColor(0xCCCCCC).width('90%')
S
sienna1128 已提交
141
      Image($r('app.media.image')).width('90%').height(40).hueRotate(90)
Z
zengyawen 已提交
142 143 144 145
    }.width('100%').margin({ top: 5 })
  }
}
```
T
fourth  
tianyu 已提交
146

S
sienna1128 已提交
147
![imageeffect](figures/imageeffect.png)
S
sienna1128 已提交
148