• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.arkui.drawableDescriptor (DrawableDescriptor)
2
3本模块提供获取pixelMap的能力,包括前景、背景、蒙版和分层图标。
4
5> **说明:**
6>
7> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> 示例效果请以真机运行为准,当前IDE预览器不支持。
10
11## 导入模块
12
13```ts
14import { DrawableDescriptor, LayeredDrawableDescriptor } from '@ohos.arkui.drawableDescriptor';
15```
16
17## DrawableDescriptor.constructor
18constructor()
19
20创建DrawableDescriptor或LayeredDrawableDescriptor对象。对象构造需要使用全球化接口[getDrawableDescriptor](js-apis-resource-manager.md#getdrawabledescriptor)或[getDrawableDescriptorByName](js-apis-resource-manager.md#getdrawabledescriptorbyname)。
21
22**系统接口:** 此接口为系统接口。
23
24**系统能力:** SystemCapability.ArkUI.ArkUI.Full
25
26### DrawableDescriptor
27
28当传入资源id或name为普通图片时,生成DrawableDescriptor对象。
29
30### LayeredDrawableDescriptor
31
32当传入资源id或name为包含前景和背景资源的json文件时,生成LayeredDrawableDescriptor对象。
33
34drawable.json位于项目工程entry/src/main/resources/base/media目录下。定义请参考:
35
36```json
37{
38  "layered-image":
39  {
40    "background" : "$media:background",
41    "foreground" : "$media:foreground"
42  }
43}
44```
45
46**示例:**
47```ts
48// xxx.ets
49import { DrawableDescriptor, LayeredDrawableDescriptor } from '@ohos.arkui.drawableDescriptor'
50
51@Entry
52@Component
53struct Index {
54  private resManager = getContext().resourceManager
55
56  build() {
57    Row() {
58      Column() {
59        Image((this.resManager.getDrawableDescriptor($r('app.media.drawable').id) as LayeredDrawableDescriptor))
60        Image(((this.resManager.getDrawableDescriptor($r('app.media.drawable')
61          .id) as LayeredDrawableDescriptor).getForeground()).getPixelMap())
62      }.height('50%')
63    }.width('50%')
64  }
65}
66```
67
68## DrawableDescriptor.getPixelMap
69getPixelMap(): image.PixelMap;
70
71获取pixelMap。
72
73**系统能力:** SystemCapability.ArkUI.ArkUI.Full
74
75**返回值:**
76
77| 类型                                       | 说明       |
78| ---------------------------------------- | -------- |
79| [image.PixelMap](../apis/js-apis-image.md#pixelmap7) | PixelMap |
80
81**示例:**
82  ```ts
83import { DrawableDescriptor, LayeredDrawableDescriptor } from '@ohos.arkui.drawableDescriptor'
84let resManager = getContext().resourceManager
85let pixmap: DrawableDescriptor = (resManager.getDrawableDescriptor($r('app.media.drawable')
86    .id)) as DrawableDescriptor;
87let pixmapNew: object = pixmap.getPixelMap()
88  ```
89
90## LayeredDrawableDescriptor.getPixelMap
91getPixelMap(): image.PixelMap;
92
93获取前景、背景和蒙版融合裁剪后的pixelMap。
94
95**系统能力:** SystemCapability.ArkUI.ArkUI.Full
96
97**返回值:**
98
99| 类型                                       | 说明       |
100| ---------------------------------------- | -------- |
101| [image.PixelMap](../apis/js-apis-image.md#pixelmap7) | PixelMap |
102
103**示例:**
104  ```ts
105import { DrawableDescriptor, LayeredDrawableDescriptor } from '@ohos.arkui.drawableDescriptor'
106let resManager = getContext().resourceManager
107let pixmap: LayeredDrawableDescriptor = (resManager.getDrawableDescriptor($r('app.media.drawable')
108    .id)) as LayeredDrawableDescriptor;
109let pixmapNew: object = pixmap.getPixelMap()
110  ```
111
112## LayeredDrawableDescriptor.getForeground
113getForeground(): DrawableDescriptor;
114
115获取前景的DrawableDescriptor对象。
116
117**系统能力:** SystemCapability.ArkUI.ArkUI.Full
118
119**返回值:**
120
121| 类型                                       | 说明                   |
122| ---------------------------------------- | -------------------- |
123| [DrawableDescriptor](#drawabledescriptor) | DrawableDescriptor对象 |
124
125**示例:**
126  ```ts
127import { DrawableDescriptor, LayeredDrawableDescriptor } from '@ohos.arkui.drawableDescriptor'
128let resManager = getContext().resourceManager
129let drawable: LayeredDrawableDescriptor = (resManager.getDrawableDescriptor($r('app.media.drawable')
130    .id)) as LayeredDrawableDescriptor;
131let drawableNew: object =drawable.getForeground()
132  ```
133
134## LayeredDrawableDescriptor.getBackground
135getBackground(): DrawableDescriptor;
136
137获取背景的DrawableDescriptor对象。
138
139**系统能力:** SystemCapability.ArkUI.ArkUI.Full
140
141**返回值:**
142
143| 类型                                       | 说明                   |
144| ---------------------------------------- | -------------------- |
145| [DrawableDescriptor](#drawabledescriptor) | DrawableDescriptor对象 |
146
147**示例:**
148  ```ts
149import { DrawableDescriptor, LayeredDrawableDescriptor } from '@ohos.arkui.drawableDescriptor'
150let resManager = getContext().resourceManager
151let drawable: LayeredDrawableDescriptor = (resManager.getDrawableDescriptor($r('app.media.drawable')
152    .id)) as LayeredDrawableDescriptor;
153let drawableNew: object =drawable.getBackground()
154  ```
155
156## LayeredDrawableDescriptor.getMask
157getMask(): DrawableDescriptor;
158
159获取蒙版的DrawableDescriptor对象。
160
161**系统能力:** SystemCapability.ArkUI.ArkUI.Full
162
163**返回值:**
164
165| 类型                                       | 说明                   |
166| ---------------------------------------- | -------------------- |
167| [DrawableDescriptor](#drawabledescriptor) | DrawableDescriptor对象 |
168
169**示例:**
170  ```ts
171import { DrawableDescriptor, LayeredDrawableDescriptor } from '@ohos.arkui.drawableDescriptor'
172let resManager = getContext().resourceManager
173let drawable: LayeredDrawableDescriptor = (resManager.getDrawableDescriptor($r('app.media.drawable')
174    .id)) as LayeredDrawableDescriptor;
175let drawableNew: object =drawable.getMask()
176  ```
177## LayeredDrawableDescriptor.getMaskClipPath
178static getMaskClipPath(): string
179
180LayeredDrawableDescriptor的静态方法,获取系统内置的裁切路径参数。
181
182**系统能力:** SystemCapability.ArkUI.ArkUI.Full
183
184**返回值:**
185
186| 类型                                       | 说明                   |
187| ---------------------------------------- | -------------------- |
188| string | 返回裁切路径的命令字符串 |
189
190**示例:**
191
192  ```ts
193// xxx.ets
194import { DrawableDescriptor, LayeredDrawableDescriptor } from '@ohos.arkui.drawableDescriptor'
195
196@Entry
197@Component
198struct Index {
199  build() {
200    Row() {
201      Column() {
202        Image($r('app.media.icon'))
203          .width('200px').height('200px')
204          .clip(new Path({commands:LayeredDrawableDescriptor.getMaskClipPath()}))
205      Text(`获取系统内置的裁剪路径参数:`)
206          .fontWeight(800)
207        Text(JSON.stringify(LayeredDrawableDescriptor.getMaskClipPath()))
208          .padding({ left: 20, right: 20 })
209      }.height('100%').justifyContent(FlexAlign.Center)
210    }.width('100%')
211  }
212}
213  ```