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