1# drawing_types.h 2<!--Kit: ArkGraphics 2D--> 3<!--Subsystem: Graphic--> 4<!--Owner: @hangmengxin--> 5<!--Designer: @wangyanglan--> 6<!--Tester: @nobuggers--> 7<!--Adviser: @ge-yafang--> 8 9## 概述 10 11文件中定义了用于绘制2d图形的数据类型,包括画布、画笔、画刷、位图和路径。 12 13**引用文件:** <native_drawing/drawing_types.h> 14 15**库:** libnative_drawing.so 16 17**起始版本:** 8 18 19**相关模块:** [Drawing](capi-drawing.md) 20 21## 汇总 22 23### 结构体 24 25| 名称 | typedef关键字 | 描述 | 26| -- | -- | -- | 27| [OH_Drawing_Point2D](capi-drawing-oh-drawing-point2d.md) | OH_Drawing_Point2D | 定义一个二维的坐标点。 | 28| [OH_Drawing_Point3D](capi-drawing-oh-drawing-point3d.md) | OH_Drawing_Point3D | 定义一个三维的坐标点。 | 29| [OH_Drawing_Image_Info](capi-drawing-oh-drawing-image-info.md) | OH_Drawing_Image_Info | 定义图片信息结构体。 | 30| [OH_Drawing_RectStyle_Info](capi-drawing-oh-drawing-rectstyle-info.md) | OH_Drawing_RectStyle_Info | 定义矩形框样式结构体。 | 31| [OH_Drawing_String](capi-drawing-oh-drawing-string.md) | OH_Drawing_String | 采用UTF-16编码的字符串信息结构体。 | 32| [OH_Drawing_Canvas](capi-drawing-oh-drawing-canvas.md) | OH_Drawing_Canvas | 定义为一块矩形的画布,可以结合画笔和画刷在上面绘制各种形状、图片和文字。 | 33| [OH_Drawing_Pen](capi-drawing-oh-drawing-pen.md) | OH_Drawing_Pen | 定义为画笔,画笔用于描述绘制图形轮廓的样式和颜色。 | 34| [OH_Drawing_Region](capi-drawing-oh-drawing-region.md) | OH_Drawing_Region | 定义一个区域,用于表示画布上的封闭区域,实现更精确的图形控制。 | 35| [OH_Drawing_Brush](capi-drawing-oh-drawing-brush.md) | OH_Drawing_Brush | 定义为画刷,画刷用于描述填充图形的样式和颜色。 | 36| [OH_Drawing_Path](capi-drawing-oh-drawing-path.md) | OH_Drawing_Path | 定义为路径,路径用于自定义各种形状。 | 37| [OH_Drawing_Bitmap](capi-drawing-oh-drawing-bitmap.md) | OH_Drawing_Bitmap | 定义为位图,位图是一块内存,内存中包含了描述一张图片的像素数据。 | 38| [OH_Drawing_Point](capi-drawing-oh-drawing-point.md) | OH_Drawing_Point | 定义一个点,用于描述坐标点。 | 39| [OH_Drawing_PixelMap](capi-drawing-oh-drawing-pixelmap.md) | OH_Drawing_PixelMap | 定义像素图,用于包装图像框架支持的真实像素图。 | 40| [OH_Drawing_ColorSpace](capi-drawing-oh-drawing-colorspace.md) | OH_Drawing_ColorSpace | 定义色彩空间,用于解释颜色信息。 | 41| [OH_Drawing_PathEffect](capi-drawing-oh-drawing-patheffect.md) | OH_Drawing_PathEffect | 定义一个路径效果,用于影响描边路径。 | 42| [OH_Drawing_Rect](capi-drawing-oh-drawing-rect.md) | OH_Drawing_Rect | 用于描述矩形。 | 43| [OH_Drawing_RoundRect](capi-drawing-oh-drawing-roundrect.md) | OH_Drawing_RoundRect | 用于描述圆角矩形。 | 44| [OH_Drawing_Matrix](capi-drawing-oh-drawing-matrix.md) | OH_Drawing_Matrix | 定义一个矩阵,用于描述坐标变换。 | 45| [OH_Drawing_ShaderEffect](capi-drawing-oh-drawing-shadereffect.md) | OH_Drawing_ShaderEffect | 定义一个着色器,用于描述绘制内容的源颜色。 | 46| [OH_Drawing_ShadowLayer](capi-drawing-oh-drawing-shadowlayer.md) | OH_Drawing_ShadowLayer | 定义一个阴影层,用于描述绘制内容的阴影层。 | 47| [OH_Drawing_Filter](capi-drawing-oh-drawing-filter.md) | OH_Drawing_Filter | 定义一个滤波器,用于存储颜色滤波器,蒙版滤波器和图像滤波器。 | 48| [OH_Drawing_MaskFilter](capi-drawing-oh-drawing-maskfilter.md) | OH_Drawing_MaskFilter | 定义蒙版滤波器。 | 49| [OH_Drawing_ColorFilter](capi-drawing-oh-drawing-colorfilter.md) | OH_Drawing_ColorFilter | 定义颜色滤波器,传入一个颜色并返回一个新的颜色。 | 50| [OH_Drawing_Font](capi-drawing-oh-drawing-font.md) | OH_Drawing_Font | 用于描述字体。 | 51| [OH_Drawing_FontFeatures](capi-drawing-oh-drawing-fontfeatures.md) | OH_Drawing_FontFeatures | 用于描述字体特征容器。字体特征是字体内置的排版规则,控制字形显示。例如:连字、替代字形、上下标等。 | 52| [OH_Drawing_MemoryStream](capi-drawing-oh-drawing-memorystream.md) | OH_Drawing_MemoryStream | 用于描述内存流。 | 53| [OH_Drawing_FontArguments](capi-drawing-oh-drawing-fontarguments.md) | OH_Drawing_FontArguments | 用于描述字型参数。 | 54| [OH_Drawing_Typeface](capi-drawing-oh-drawing-typeface.md) | OH_Drawing_Typeface | 用于描述字形。 | 55| [OH_Drawing_TextBlob](capi-drawing-oh-drawing-textblob.md) | OH_Drawing_TextBlob | 定义一个文本对象,表示将多个文本组合到一个不可变的容器中。每个文本行由字形和位置组成。 | 56| [OH_Drawing_Image](capi-drawing-oh-drawing-image.md) | OH_Drawing_Image | 定义一个用于描述绘制二维像素数组的图片。 | 57| [OH_Drawing_ImageFilter](capi-drawing-oh-drawing-imagefilter.md) | OH_Drawing_ImageFilter | 定义图像滤波器, 用于对构成图像像素的所有颜色位进行操作。 | 58| [OH_Drawing_SamplingOptions](capi-drawing-oh-drawing-samplingoptions.md) | OH_Drawing_SamplingOptions | 定义一个采样选项,用于描述图片、位图等图像的采样方法。 | 59| [OH_Drawing_TextBlobBuilder](capi-drawing-oh-drawing-textblobbuilder.md) | OH_Drawing_TextBlobBuilder | 定义文本构建器,用于构建文本。 | 60| [OH_Drawing_GpuContext](capi-drawing-oh-drawing-gpucontext.md) | OH_Drawing_GpuContext | 定义图形处理器上下文,用于描述图形处理器后端上下文。 | 61| [OH_Drawing_Surface](capi-drawing-oh-drawing-surface.md) | OH_Drawing_Surface | 定义surface,用于管理画布绘制的内容。 | 62| [OH_Drawing_FontMgr](capi-drawing-oh-drawing-fontmgr.md) | OH_Drawing_FontMgr | 定义字体管理类, 用于字体管理。 | 63| [OH_Drawing_FontStyleSet](capi-drawing-oh-drawing-fontstyleset.md) | OH_Drawing_FontStyleSet | 定义字体样式集, 用于字体样式族匹配。 | 64| [OH_Drawing_RecordCmdUtils](capi-drawing-oh-drawing-recordcmdutils.md) | OH_Drawing_RecordCmdUtils | 定义指令录制工具,用于生成录制指令。 | 65| [OH_Drawing_RecordCmd](capi-drawing-oh-drawing-recordcmd.md) | OH_Drawing_RecordCmd | 定义录制指令类, 用于存储录制指令的集合。 | 66| [OH_Drawing_Array](capi-drawing-oh-drawing-array.md) | OH_Drawing_Array | 定义数组对象, 用于存储多个同类型对象。 | 67 68### 枚举 69 70| 名称 | typedef关键字 | 描述 | 71| -- | -- | -- | 72| [OH_Drawing_ColorFormat](#oh_drawing_colorformat) | OH_Drawing_ColorFormat | 用于描述位图像素的存储格式。 | 73| [OH_Drawing_AlphaFormat](#oh_drawing_alphaformat) | OH_Drawing_AlphaFormat | 用于描述位图像素的透明度分量。 | 74| [OH_Drawing_BlendMode](#oh_drawing_blendmode) | OH_Drawing_BlendMode | 混合模式枚举。混合模式的操作会为两种颜色(源色、目标色)生成一种新的颜色。<br>这些操作在红、绿、蓝3个颜色通道上是相同的(透明度有另外的处理规则)。<br>对于这些,我们使用透明度通道作为示例,而不是单独命名每个通道。为简洁起见,我们使用以下缩写:<br>s : source,源的缩写。<br>d : destination,目标的缩写。<br>sa : source alpha,源透明度的缩写。<br>da : destination alpha,目标透明度的缩写。<br>计算结果用如下缩写表示:<br>r : 如果4个通道的计算方式相同,用r表示。<br>ra : 如果只操作透明度通道,用ra表示。<br>rc : 如果操作3个颜色通道,用rc表示。 | 75| [OH_Drawing_TextEncoding](#oh_drawing_textencoding) | OH_Drawing_TextEncoding | 文本编码类型枚举。 | 76 77## 枚举类型说明 78 79### OH_Drawing_ColorFormat 80 81``` 82enum OH_Drawing_ColorFormat 83``` 84 85**描述** 86 87用于描述位图像素的存储格式。 88 89**起始版本:** 8 90 91| 枚举项 | 描述 | 92| -- | -- | 93| COLOR_FORMAT_UNKNOWN | 未知格式。| 94| COLOR_FORMAT_ALPHA_8 | 每个像素用一个8位的量表示,8个比特位表示透明度。 | 95| COLOR_FORMAT_RGB_565 | 每个像素用一个16位的量表示,高位到低位依次是5个比特位表示红,6个比特位表示绿,5个比特位表示蓝。 | 96| COLOR_FORMAT_ARGB_4444 | 每个像素用一个16位的量表示,高位到低位依次是4个比特位表示透明度,4个比特位表示红,4个比特位表示绿,4个比特位表示蓝。 | 97| COLOR_FORMAT_RGBA_8888 | 每个像素用一个32位的量表示,高位到低位依次是8个比特位表示透明度,8个比特位表示红,8个比特位表示绿,8个比特位表示蓝。 | 98| COLOR_FORMAT_BGRA_8888 | 每个像素用一个32位的量表示,高位到低位依次是8个比特位表示蓝,8个比特位表示绿,8个比特位表示红,8个比特位表示透明度。 | 99 100### OH_Drawing_AlphaFormat 101 102``` 103enum OH_Drawing_AlphaFormat 104``` 105 106**描述** 107 108用于描述位图像素的透明度分量。 109 110**起始版本:** 8 111 112| 枚举项 | 描述 | 113| -- | -- | 114| ALPHA_FORMAT_UNKNOWN | 未知格式。 | 115| ALPHA_FORMAT_OPAQUE | 位图无透明度。 | 116| ALPHA_FORMAT_PREMUL | 每个像素的颜色组件由透明度分量预先乘以。 | 117| ALPHA_FORMAT_UNPREMUL | 每个像素的颜色组件未由透明度分量预先乘以。 | 118 119### OH_Drawing_BlendMode 120 121``` 122enum OH_Drawing_BlendMode 123``` 124 125**描述** 126 127混合模式枚举。混合模式的操作会为两种颜色(源色、目标色)生成一种新的颜色。<br>这些操作在红、绿、蓝3个颜色通道上是相同的(透明度有另外的处理规则)。<br>对于这些,我们使用透明度通道作为示例,而不是单独命名每个通道。为简洁起见,我们使用以下缩写:<br>s : source,源的缩写。<br>d : destination,目标的缩写。<br>sa : source alpha,源透明度的缩写。<br>da : destination alpha,目标透明度的缩写。<br>计算结果用如下缩写表示:<br>r : 如果4个通道的计算方式相同,用r表示。<br>ra : 如果只操作透明度通道,用ra表示。<br>rc : 如果操作3个颜色通道,用rc表示。 128 129**起始版本:** 11 130 131| 枚举项 | 描述 | 132| -- | -- | 133| BLEND_MODE_CLEAR | 清除模式,r = 0。 | 134| BLEND_MODE_SRC | r = s(result的4个通道,都等于source的4个通道,即结果等于源。) | 135| BLEND_MODE_DST | r = d(result的4个通道,都等于destination的4个通道,即结果等于目标。) | 136| BLEND_MODE_SRC_OVER | r = s + (1 - sa) * d。 | 137| BLEND_MODE_DST_OVER | r = d + (1 - da) * s。 | 138| BLEND_MODE_SRC_IN | r = s * da。 | 139| BLEND_MODE_DST_IN | r = d * sa。 | 140| BLEND_MODE_SRC_OUT | r = s * (1 - da)。 | 141| BLEND_MODE_DST_OUT | r = d * (1 - sa)。 | 142| BLEND_MODE_SRC_ATOP | r = s * da + d * (1 - sa)。 | 143| BLEND_MODE_DST_ATOP | r = d * sa + s * (1 - da)。 | 144| BLEND_MODE_XOR | r = s * (1 - da) + d * (1 - sa)。 | 145| BLEND_MODE_PLUS | r = min(s + d, 1)。 | 146| BLEND_MODE_MODULATE | r = s * d。 | 147| BLEND_MODE_SCREEN | 滤色模式,r = s + d - s * d。 | 148| BLEND_MODE_OVERLAY | 叠加模式。 | 149| BLEND_MODE_DARKEN | 变暗模式,rc = s + d - max(s * da, d * sa), ra = s + (1 - sa) * d。 | 150| BLEND_MODE_LIGHTEN | 变亮模式,rc = s + d - min(s * da, d * sa), ra = s + (1 - sa) * d。 | 151| BLEND_MODE_COLOR_DODGE | 颜色减淡模式。 | 152| BLEND_MODE_COLOR_BURN | 颜色加深模式。 | 153| BLEND_MODE_HARD_LIGHT | 强光模式。 | 154| BLEND_MODE_SOFT_LIGHT | 柔光模式。 | 155| BLEND_MODE_DIFFERENCE | 差值模式,rc = s + d - 2 * (min(s * da, d * sa)), ra = s + (1 - sa) * d。 | 156| BLEND_MODE_EXCLUSION | 排除模式,rc = s + d - two(s * d), ra = s + (1 - sa) * d。 | 157| BLEND_MODE_MULTIPLY | 正片叠底,r = s * (1 - da) + d * (1 - sa) + s * d。 | 158| BLEND_MODE_HUE | 色相模式。 | 159| BLEND_MODE_SATURATION | 饱和度模式。 | 160| BLEND_MODE_COLOR | 颜色模式。 | 161| BLEND_MODE_LUMINOSITY | 亮度模式。 | 162 163### OH_Drawing_TextEncoding 164 165``` 166enum OH_Drawing_TextEncoding 167``` 168 169**描述** 170 171文本编码类型枚举。 172 173**起始版本:** 12 174 175| 枚举项 | 描述 | 176| -- | -- | 177| TEXT_ENCODING_UTF8 | 单字节,表示UTF-8或ASCII。 | 178| TEXT_ENCODING_UTF16 | 双字节,表示大部分Unicode。 | 179| TEXT_ENCODING_UTF32 | 四字节,表示所有Unicode。 | 180| TEXT_ENCODING_GLYPH_ID | 双字节,表示字形索引。 | 181 182 183