• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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