• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# drawing_shader_effect.h
2
3## 概述
4
5声明与绘图模块中的着色器对象相关的函数。
6
7**引用文件:** <native_drawing/drawing_shader_effect.h>
8
9**库:** libnative_drawing.so
10
11**起始版本:** 11
12
13**相关模块:** [Drawing](capi-drawing.md)
14
15## 汇总
16
17### 枚举
18
19| 名称 | typedef关键字 | 描述 |
20| -- | -- | -- |
21| [OH_Drawing_TileMode](#oh_drawing_tilemode) | OH_Drawing_TileMode | 着色器效果平铺模式的枚举。 |
22
23### 函数
24
25| 名称 | 描述 |
26| -- | -- |
27| [OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateColorShader(const uint32_t color)](#oh_drawing_shadereffectcreatecolorshader) | 创建具有单一颜色的着色器。 |
28| [OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateLinearGradient(const OH_Drawing_Point* startPt,const OH_Drawing_Point* endPt, const uint32_t* colors,const float* pos, uint32_t size, OH_Drawing_TileMode tileMode)](#oh_drawing_shadereffectcreatelineargradient) | 创建着色器,在两个指定点之间生成线性渐变。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>startPt、endPt、colors任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>tileMode不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。 |
29| [OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateLinearGradientWithLocalMatrix(const OH_Drawing_Point2D* startPt, const OH_Drawing_Point2D* endPt, const uint32_t* colors, const float* pos,uint32_t size, OH_Drawing_TileMode tileMode, const OH_Drawing_Matrix* matrix)](#oh_drawing_shadereffectcreatelineargradientwithlocalmatrix) | 创建着色器,在两个指定点之间生成线性渐变。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>startPt、endPt、colors任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>tileMode不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。 |
30| [OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateRadialGradient(const OH_Drawing_Point* centerPt, float radius,const uint32_t* colors, const float* pos, uint32_t size, OH_Drawing_TileMode tileMode)](#oh_drawing_shadereffectcreateradialgradient) | 创建着色器,在给定圆心和半径的情况下生成径向渐变。<br>从起点到终点颜色从内到外进行圆形渐变(从中间向外拉)被称为径向渐变。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>centerPt、colors任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>tileMode不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。 |
31| [OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateRadialGradientWithLocalMatrix(const OH_Drawing_Point2D* centerPt, float radius, const uint32_t* colors, const float* pos, uint32_t size,OH_Drawing_TileMode tileMode, const OH_Drawing_Matrix* matrix)](#oh_drawing_shadereffectcreateradialgradientwithlocalmatrix) | 创建着色器,在给定圆心和半径的情况下生成径向渐变。<br>从起点到终点颜色从内到外进行圆形渐变(从中间向外拉)被称为径向渐变。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>centerPt、colors任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>tileMode不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。 |
32| [OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateSweepGradientWithLocalMatrix(const OH_Drawing_Point* centerPt,const uint32_t* colors, const float* pos, uint32_t size, OH_Drawing_TileMode tileMode, const OH_Drawing_Matrix* matrix)](#oh_drawing_shadereffectcreatesweepgradientwithlocalmatrix) | 创建着色器,在给定中心的情况下结合矩阵变换生成扇形渐变。<br>颜色从0°到360°渐变被称为扇形渐变。 |
33| [OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateSweepGradient(const OH_Drawing_Point* centerPt,const uint32_t* colors, const float* pos, uint32_t size, OH_Drawing_TileMode tileMode)](#oh_drawing_shadereffectcreatesweepgradient) | 创建着色器,在给定中心的情况下生成扇形渐变。<br>颜色从0°到360°渐变被称为扇形渐变。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>centerPt、colors任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>tileMode不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。 |
34| [OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateImageShader(OH_Drawing_Image* image,OH_Drawing_TileMode tileX, OH_Drawing_TileMode tileY, const OH_Drawing_SamplingOptions* samplingOptions,const OH_Drawing_Matrix* matrix)](#oh_drawing_shadereffectcreateimageshader) | 创建图像着色器。此接口不建议用于录制类型的画布,会影响性能。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>image、samplingOptions任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>tileX、tileY任意一个不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。 |
35| [OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateTwoPointConicalGradient(const OH_Drawing_Point2D* startPt,float startRadius, const OH_Drawing_Point2D* endPt, float endRadius, const uint32_t* colors, const float* pos,uint32_t size, OH_Drawing_TileMode tileMode, const OH_Drawing_Matrix* matrix)](#oh_drawing_shadereffectcreatetwopointconicalgradient) | 创建着色器,在给定两个圆之间生成渐变。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>startPt、endPt、colors任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>tileMode不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。 |
36| [OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateCompose(OH_Drawing_ShaderEffect* dst,OH_Drawing_ShaderEffect* src, OH_Drawing_BlendMode mode)](#oh_drawing_shadereffectcreatecompose) | 按照指定的混合模式对两个着色器进行叠加,生成一个新的着色器。 |
37| [void OH_Drawing_ShaderEffectDestroy(OH_Drawing_ShaderEffect* shaderEffect)](#oh_drawing_shadereffectdestroy) | 销毁着色器对象,并收回该对象占用的内存。 |
38| [OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreatePixelMapShader(OH_Drawing_PixelMap* pixelMap,OH_Drawing_TileMode tileX, OH_Drawing_TileMode tileY, const OH_Drawing_SamplingOptions* samplingOptions,const OH_Drawing_Matrix* matrix)](#oh_drawing_shadereffectcreatepixelmapshader) | 创建像素图着色器。 |
39
40## 枚举类型说明
41
42### OH_Drawing_TileMode
43
44```
45enum OH_Drawing_TileMode
46```
47
48**描述**
49
50着色器效果平铺模式的枚举。
51
52**起始版本:** 11
53
54| 枚举项 | 描述 |
55| -- | -- |
56| CLAMP | 如果着色器效果超出其原始边界,则复制边缘颜色。 |
57| REPEAT | 在水平和垂直方向上重复着色器效果图像。 |
58| MIRROR | 水平和垂直重复着色器效果图像,交替镜像。 |
59| DECAL | 只在原始区域内绘制,其他地方返回透明黑色。 |
60
61
62## 函数说明
63
64### OH_Drawing_ShaderEffectCreatePixelMapShader()
65
66```
67OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreatePixelMapShader(OH_Drawing_PixelMap* pixelMap,OH_Drawing_TileMode tileX, OH_Drawing_TileMode tileY, const OH_Drawing_SamplingOptions* samplingOptions,const OH_Drawing_Matrix* matrix)
68```
69
70**描述**
71
72创建像素图着色器。
73
74**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
75
76**起始版本:** 20
77
78
79**参数:**
80
81| 参数项 | 描述 |
82| -- | -- |
83| [OH_Drawing_PixelMap](capi-drawing-oh-drawing-pixelmap.md)* pixelMap | 指向像素图[OH_Drawing_PixelMap](capi-drawing-oh-drawing-pixelmap.md)的指针。 |
84| [OH_Drawing_TileMode](capi-drawing-shader-effect-h.md#oh_drawing_tilemode) tileX | 水平方向着色器效果平铺模式类型,支持可选的具体模式可见[OH_Drawing_TileMode](capi-drawing-shader-effect-h.md#oh_drawing_tilemode)枚举。 |
85| [OH_Drawing_TileMode](capi-drawing-shader-effect-h.md#oh_drawing_tilemode) tileY | 垂直方向着色器效果平铺模式类型,支持可选的具体模式可见[OH_Drawing_TileMode](capi-drawing-shader-effect-h.md#oh_drawing_tilemode)枚举。 |
86| [const OH_Drawing_SamplingOptions](capi-drawing-oh-drawing-samplingoptions.md)* samplingOptions | 指向采样选项对象[OH_Drawing_SamplingOptions](capi-drawing-oh-drawing-samplingoptions.md)的指针。 |
87| [const OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。如果矩阵指针为空,默认传入单位矩阵。 |
88
89**返回:**
90
91| 类型 | 说明 |
92| -- | -- |
93| OH_Drawing_ShaderEffect* | 返回创建的着色器对象的指针。 |
94
95### OH_Drawing_ShaderEffectCreateColorShader()
96
97```
98OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateColorShader(const uint32_t color)
99```
100
101**描述**
102
103创建具有单一颜色的着色器。
104
105**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
106
107**起始版本:** 12
108
109
110**参数:**
111
112| 参数项 | 描述 |
113| -- | -- |
114| const uint32_t color | 表示着色器的ARGB格式颜色,该参数为32位无符号整数。 |
115
116**返回:**
117
118| 类型 | 说明 |
119| -- | -- |
120| [OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)* | 函数会返回一个指针,指针指向创建的着色器对象[OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)。如果对象返回NULL,表示创建失败;可能的原因是可用内存为空。 |
121
122### OH_Drawing_ShaderEffectCreateLinearGradient()
123
124```
125OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateLinearGradient(const OH_Drawing_Point* startPt,const OH_Drawing_Point* endPt, const uint32_t* colors,const float* pos, uint32_t size, OH_Drawing_TileMode tileMode)
126```
127
128**描述**
129
130创建着色器,在两个指定点之间生成线性渐变。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>startPt、endPt、colors任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>tileMode不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。
131
132**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
133
134**起始版本:** 11
135
136
137**参数:**
138
139| 参数项 | 描述 |
140| -- | -- |
141| const [OH_Drawing_Point](capi-drawing-oh-drawing-point.md)* startPt | 表示渐变的起点。 |
142| const [OH_Drawing_Point](capi-drawing-oh-drawing-point.md)* endPt | 表示渐变的终点。 |
143| const uint32_t* colors | 表示在两个点之间分布的颜色。 |
144| const float* pos | 表示colors中每个对应颜色的相对位置,数组长度需和colors保持一致。如果pos为NULL,颜色均匀分布在起点和终点之间。 |
145| uint32_t size | 表示颜色和位置的数量(如果pos不为NULL)。 |
146| [OH_Drawing_TileMode](#oh_drawing_tilemode) tileMode | 着色器效果平铺模式类型,支持可选的具体模式可见[OH_Drawing_TileMode](capi-drawing-shader-effect-h.md#oh_drawing_tilemode)枚举。 |
147
148**返回:**
149
150| 类型 | 说明 |
151| -- | -- |
152| [OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)* | 返回创建的着色器对象的指针。 |
153
154### OH_Drawing_ShaderEffectCreateLinearGradientWithLocalMatrix()
155
156```
157OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateLinearGradientWithLocalMatrix(const OH_Drawing_Point2D* startPt, const OH_Drawing_Point2D* endPt, const uint32_t* colors, const float* pos,uint32_t size, OH_Drawing_TileMode tileMode, const OH_Drawing_Matrix* matrix)
158```
159
160**描述**
161
162创建着色器,在两个指定点之间生成线性渐变。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>startPt、endPt、colors任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>tileMode不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。
163
164**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
165
166**起始版本:** 12
167
168
169**参数:**
170
171| 参数项 | 描述 |
172| -- | -- |
173| const [OH_Drawing_Point2D](capi-drawing-oh-drawing-point2d.md)* startPt | 表示渐变的起点。 |
174| const [OH_Drawing_Point2D](capi-drawing-oh-drawing-point2d.md)* endPt | 表示渐变的终点。 |
175| const uint32_t* colors | 表示在两个点之间分布的颜色。 |
176| const float* pos | 表示colors中每个对应颜色的相对位置,数组长度需和colors保持一致。如果pos为NULL,颜色均匀分布在起点和终点之间。 |
177| uint32_t size | 表示颜色和位置的数量(如果pos不为NULL)。 |
178| [OH_Drawing_TileMode](#oh_drawing_tilemode) tileMode | 着色器效果平铺模式类型,支持可选的具体模式可见[OH_Drawing_TileMode](capi-drawing-shader-effect-h.md#oh_drawing_tilemode)枚举。 |
179| const [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 表示作用于着色器上的矩阵变换,如果matrix是NULL, 默认是一个单位矩阵。 |
180
181**返回:**
182
183| 类型 | 说明 |
184| -- | -- |
185| [OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)* | 函数会返回一个指针,指针指向创建的着色器对象[OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)。如果对象返回NULL,表示创建失败;可能的原因是可用内存为空,或者是startPt、endPt、colors至少一个为NULL。 |
186
187### OH_Drawing_ShaderEffectCreateRadialGradient()
188
189```
190OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateRadialGradient(const OH_Drawing_Point* centerPt, float radius,const uint32_t* colors, const float* pos, uint32_t size, OH_Drawing_TileMode tileMode)
191```
192
193**描述**
194
195创建着色器,在给定圆心和半径的情况下生成径向渐变。<br>从起点到终点颜色从内到外进行圆形渐变(从中间向外拉)被称为径向渐变。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>centerPt、colors任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>tileMode不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。
196
197**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
198
199**起始版本:** 11
200
201
202**参数:**
203
204| 参数项 | 描述 |
205| -- | -- |
206| const [OH_Drawing_Point](capi-drawing-oh-drawing-point.md)* centerPt | 表示渐变的圆心。 |
207| float radius | 表示渐变的半径,需为非负数。 |
208| const uint32_t* colors | 表示在径向上分布的颜色。 |
209| const float* pos | 表示colors中每个对应颜色的相对位置,数组长度需和colors保持一致。如果pos为NULL,颜色均匀分布在径向上。 |
210| uint32_t size | 表示颜色和位置的数量(如果pos不为NULL)。 |
211| [OH_Drawing_TileMode](#oh_drawing_tilemode) tileMode | 着色器效果平铺模式类型,支持可选的具体模式可见[OH_Drawing_TileMode](capi-drawing-shader-effect-h.md#oh_drawing_tilemode)枚举。 |
212
213**返回:**
214
215| 类型 | 说明 |
216| -- | -- |
217| [OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)* | 返回创建的着色器对象的指针。 |
218
219### OH_Drawing_ShaderEffectCreateRadialGradientWithLocalMatrix()
220
221```
222OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateRadialGradientWithLocalMatrix(const OH_Drawing_Point2D* centerPt, float radius, const uint32_t* colors, const float* pos, uint32_t size,OH_Drawing_TileMode tileMode, const OH_Drawing_Matrix* matrix)
223```
224
225**描述**
226
227创建着色器,在给定圆心和半径的情况下生成径向渐变。<br>从起点到终点颜色从内到外进行圆形渐变(从中间向外拉)被称为径向渐变。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>centerPt、colors任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>tileMode不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。
228
229**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
230
231**起始版本:** 12
232
233
234**参数:**
235
236| 参数项 | 描述 |
237| -- | -- |
238| const [OH_Drawing_Point2D](capi-drawing-oh-drawing-point2d.md)* centerPt | 表示渐变的圆心。 |
239| float radius | 表示渐变的半径。 |
240| const uint32_t* colors | 表示在径向上分布的颜色。 |
241| const float* pos | 表示colors中每个对应颜色的相对位置,数组长度需和colors保持一致。如果pos为NULL,颜色均匀分布在径向上。 |
242| uint32_t size | 表示颜色和位置的数量(如果pos不为NULL)。 |
243| [OH_Drawing_TileMode](#oh_drawing_tilemode) tileMode | 着色器效果平铺模式类型,支持可选的具体模式可见[OH_Drawing_TileMode](capi-drawing-shader-effect-h.md#oh_drawing_tilemode)枚举。 |
244| const [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 表示作用于着色器上的矩阵变换,如果matrix是NULL, 默认是一个单位矩阵。 |
245
246**返回:**
247
248| 类型 | 说明 |
249| -- | -- |
250| [OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)* | 函数会返回一个指针,指针指向创建的着色器对象[OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)。如果对象返回NULL,表示创建失败;可能的原因是可用内存为空,或者是centerPt、colors至少一个为NULL。 |
251
252### OH_Drawing_ShaderEffectCreateSweepGradientWithLocalMatrix()
253
254```
255OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateSweepGradientWithLocalMatrix(const OH_Drawing_Point* centerPt,const uint32_t* colors, const float* pos, uint32_t size, OH_Drawing_TileMode tileMode, const OH_Drawing_Matrix* matrix)
256```
257
258**描述**
259
260创建着色器,在给定中心的情况下结合矩阵变换生成扇形渐变。<br>颜色从0°到360°渐变被称为扇形渐变。
261
262**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
263
264**起始版本:** 20
265
266
267**参数:**
268
269| 参数项 | 描述 |
270| -- | -- |
271| const [OH_Drawing_Point](capi-drawing-oh-drawing-point.md)* centerPt | 表示渐变的圆心。 |
272| const uint32_t* colors | 表示在两个点之间分布的颜色。 |
273| const float* pos | 表示colors中每个对应颜色的相对位置,数组长度需和colors保持一致。如果pos为NULL,颜色均匀分布在0°和360°之间。 |
274| uint32_t size | 表示颜色和位置的数量(如果pos不为NULL)。 |
275| [OH_Drawing_TileMode](#oh_drawing_tilemode) tileMode | 着色器效果平铺模式类型,支持可选的具体模式可见[OH_Drawing_TileMode](capi-drawing-shader-effect-h.md#oh_drawing_tilemode)枚举。 |
276| const [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 表示作用于着色器上的矩阵变换,如果matrix是NULL, 默认是一个单位矩阵。 |
277
278**返回:**
279
280| 类型 | 说明 |
281| -- | -- |
282| [OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)* | 函数会返回一个指针,指针指向创建的着色器对象[OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)。<br>存在以下任意一种情况时,会返回空指针:1.可用内存为空;2.centerPt、colors任意为空;3.tileMode超出枚举范围。 |
283
284### OH_Drawing_ShaderEffectCreateSweepGradient()
285
286```
287OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateSweepGradient(const OH_Drawing_Point* centerPt,const uint32_t* colors, const float* pos, uint32_t size, OH_Drawing_TileMode tileMode)
288```
289
290**描述**
291
292创建着色器,在给定中心的情况下生成扇形渐变。<br>颜色从0°到360°渐变被称为扇形渐变。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>centerPt、colors任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>tileMode不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。
293
294**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
295
296**起始版本:** 11
297
298
299**参数:**
300
301| 参数项 | 描述 |
302| -- | -- |
303| const [OH_Drawing_Point](capi-drawing-oh-drawing-point.md)* centerPt | 表示渐变的圆心。 |
304| const uint32_t* colors | 表示在两个点之间分布的颜色。 |
305| const float* pos | 表示colors中每个对应颜色的相对位置,数组长度需和colors保持一致。如果pos为NULL,颜色均匀分布在0°和360°之间。 |
306| uint32_t size | 表示颜色和位置的数量(如果pos不为NULL)。 |
307| [OH_Drawing_TileMode](#oh_drawing_tilemode) tileMode | 着色器效果平铺模式类型,支持可选的具体模式可见[OH_Drawing_TileMode](capi-drawing-shader-effect-h.md#oh_drawing_tilemode)枚举。 |
308
309**返回:**
310
311| 类型 | 说明 |
312| -- | -- |
313| [OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)* |  函数会返回一个指针,指针指向创建的着色器对象[OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)。<br>存在以下任意一种情况时,会返回空指针:1.可用内存为空;2.centerPt、colors任意为空;3.tileMode超出枚举范围。
314
315### OH_Drawing_ShaderEffectCreateImageShader()
316
317```
318OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateImageShader(OH_Drawing_Image* image,OH_Drawing_TileMode tileX, OH_Drawing_TileMode tileY, const OH_Drawing_SamplingOptions* samplingOptions,const OH_Drawing_Matrix* matrix)
319```
320
321**描述**
322
323创建图像着色器。此接口不建议用于录制类型的画布,会影响性能。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>image、samplingOptions任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>tileX、tileY任意一个不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。
324
325**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
326
327**起始版本:** 12
328
329
330**参数:**
331
332| 参数项 | 描述 |
333| -- | -- |
334| [OH_Drawing_Image](capi-drawing-oh-drawing-image.md)* image | 指向图片对象[OH_Drawing_Image](capi-drawing-oh-drawing-image.md)的指针。 |
335| [OH_Drawing_TileMode](#oh_drawing_tilemode) tileX | 水平方向着色器效果平铺模式类型,支持可选的具体模式可见[OH_Drawing_TileMode](capi-drawing-shader-effect-h.md#oh_drawing_tilemode)枚举。 |
336| [OH_Drawing_TileMode](#oh_drawing_tilemode) tileY | 垂直方向着色器效果平铺模式类型,支持可选的具体模式可见[OH_Drawing_TileMode](capi-drawing-shader-effect-h.md#oh_drawing_tilemode)枚举。 |
337| const [OH_Drawing_SamplingOptions](capi-drawing-oh-drawing-samplingoptions.md)* samplingOptions | 指向采样选项对象[OH_Drawing_SamplingOptions](capi-drawing-oh-drawing-samplingoptions.md)的指针。 |
338| const [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 指向矩阵对象[OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)的指针。如果矩阵指针为空,默认传入单位矩阵。 |
339
340**返回:**
341
342| 类型 | 说明 |
343| -- | -- |
344| [OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)* | 函数会返回一个指针,指针指向创建的着色器对象[OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)。<br>存在以下任意一种情况时,会返回空指针:1.可用内存为空;2.image、samplingOptions任意为空;3.tileX、tileY超出枚举范围。 |
345
346### OH_Drawing_ShaderEffectCreateTwoPointConicalGradient()
347
348```
349OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateTwoPointConicalGradient(const OH_Drawing_Point2D* startPt,float startRadius, const OH_Drawing_Point2D* endPt, float endRadius, const uint32_t* colors, const float* pos,uint32_t size, OH_Drawing_TileMode tileMode, const OH_Drawing_Matrix* matrix)
350```
351
352**描述**
353
354创建着色器,在给定两个圆之间生成渐变。<br>本接口会产生错误码,可以通过[OH_Drawing_ErrorCodeGet](capi-drawing-error-code-h.md#oh_drawing_errorcodeget)查看错误码的取值。<br>startPt、endPt、colors任意一个为NULL时返回OH_DRAWING_ERROR_INVALID_PARAMETER;<br>tileMode不在枚举范围内时返回OH_DRAWING_ERROR_PARAMETER_OUT_OF_RANGE。
355
356**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
357
358**起始版本:** 12
359
360
361**参数:**
362
363| 参数项 | 描述 |
364| -- | -- |
365| const [OH_Drawing_Point2D](capi-drawing-oh-drawing-point2d.md)* startPt | 表示渐变的起点圆心。 |
366| float startRadius | 表示渐变的起点半径,需为非负数。 |
367| const [OH_Drawing_Point2D](capi-drawing-oh-drawing-point2d.md)* endPt | 表示渐变的终点圆心。 |
368| float endRadius | 表示渐变的终点半径,需为非负数。 |
369| const uint32_t* colors | 表示在两个圆之间分布的颜色。 |
370| const float* pos | 表示colors中每个对应颜色的相对位置,数组长度需和colors保持一致。如果pos为NULL,颜色均匀分布在两个圆之间。 |
371| uint32_t size | 表示颜色和位置的数量(如果pos不为NULL)。 |
372| [OH_Drawing_TileMode](#oh_drawing_tilemode) tileMode | 着色器效果平铺模式类型,支持可选的具体模式可见[OH_Drawing_TileMode](capi-drawing-shader-effect-h.md#oh_drawing_tilemode)枚举。 |
373| const [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md)* matrix | 表示作用于着色器上的矩阵变换,如果matrix是NULL, 默认是一个单位矩阵。 |
374
375**返回:**
376
377| 类型 | 说明 |
378| -- | -- |
379| [OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)* | 函数会返回一个指针,指针指向创建的着色器对象[OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)。如果对象返回NULL,表示创建失败;可能的原因是:1.可用内存为空;2.startPt、endPt、colors任意为空;3.tileMode超出枚举范围。 |
380
381### OH_Drawing_ShaderEffectCreateCompose()
382
383```
384OH_Drawing_ShaderEffect* OH_Drawing_ShaderEffectCreateCompose(OH_Drawing_ShaderEffect* dst,OH_Drawing_ShaderEffect* src, OH_Drawing_BlendMode mode)
385```
386
387**描述**
388
389按照指定的混合模式对两个着色器进行叠加,生成一个新的着色器。
390
391**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
392
393**起始版本:** 20
394
395
396**参数:**
397
398| 参数项 | 描述 |
399| -- | -- |
400| [OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)* dst | 在混合模式中作为目标色的着色器。 |
401| [OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)* src | 在混合模式中作为源色的着色器。 |
402| [OH_Drawing_BlendMode](capi-drawing-types-h.md#oh_drawing_blendmode) mode | 混合模式[OH_Drawing_BlendMode](capi-drawing-types-h.md#oh_drawing_blendmode)。 |
403
404**返回:**
405
406| 类型 | 说明 |
407| -- | -- |
408| [OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)* | 函数会返回一个指针,指针指向创建的着色器对象[OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)。<br>当可用内存为空,或者是dst、src任意一个为空,或mode超出枚举范围时,结果返回NULL,表示创建失败。 |
409
410### OH_Drawing_ShaderEffectDestroy()
411
412```
413void OH_Drawing_ShaderEffectDestroy(OH_Drawing_ShaderEffect* shaderEffect)
414```
415
416**描述**
417
418销毁着色器对象,并收回该对象占用的内存。
419
420**系统能力:** SystemCapability.Graphic.Graphic2D.NativeDrawing
421
422**起始版本:** 11
423
424
425**参数:**
426
427| 参数项 | 描述 |
428| -- | -- |
429| [OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md)* shaderEffect | 表示指向着色器对象的指针。 |
430
431
432