1# Enums 2 3<!--Kit: ArkGraphics 2D--> 4<!--Subsystem: Graphics--> 5<!--Owner: @hangmengxin--> 6<!--Designer: @wangyanglan--> 7<!--Tester: @nobuggers--> 8<!--Adviser: @ge-yafang--> 9 10> **说明:** 11> 12> - 本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 13> 14> - 本模块使用屏幕物理像素单位px。 15> 16> - 本模块为单线程模型策略,需要调用方自行管理线程安全和上下文状态的切换。 17 18## BlendMode 19 20混合模式枚举。混合模式会将两种颜色(源色、目标色)以特定的方式混合生成一种新的颜色,通常用于叠加、滤镜和遮罩等图形操作场景。混合操作会分别作用于红、绿、蓝三个颜色通道,采用相同的混合逻辑,而透明度(Alpha通道)则根据各模式的定义另行处理。 21 22为简洁起见,我们使用以下缩写: 23 24s : source 源的缩写。 d : destination 目标的缩写。 sa : source alpha 源透明度的缩写。 da : destination alpha 目标透明度的缩写。 25 26计算结果用如下缩写表示: 27 28r : 如果4个通道(透明度、红、绿、蓝)的计算方式相同,用r表示。 ra : 如果只操作透明度通道,用ra表示。 rc : 如果操作3个颜色通道,用rc表示。 29 30以黄色矩形为源图像,蓝色圆形为目标图像,各混合模式枚举生成的效果示意图请参考下表。 31 32**系统能力:** SystemCapability.Graphics.Drawing 33 34| 名称 | 值 | 说明 | 示意图 | 35| ----------- | ---- | ------------------------------------------------------------ | -------- | 36| CLEAR | 0 | 清除模式,r = 0,设置为全透明。 |  | 37| SRC | 1 | r = s(result的4个通道,都等于source的4个通道,即结果等于源。),使用源像素替换目标像素。 |  | 38| DST | 2 | r = d(result的4个通道,都等于destination的4个通道,即结果等于目标。),保持目标像素不变。 |  | 39| SRC_OVER | 3 | r = s + (1 - sa) * d,在目标像素上方绘制源像素,考虑源像素的透明度。 |  | 40| DST_OVER | 4 | r = d + (1 - da) * s,在源像素上方绘制目标像素,考虑目标像素的透明度。 |  | 41| SRC_IN | 5 | r = s * da,仅保留源像素与目标不透明部分的交集。 |  | 42| DST_IN | 6 | r = d * sa,仅保留目标像素与源不透明部分的交集。 |  | 43| SRC_OUT | 7 | r = s * (1 - da),保留源像素中不与目标重叠的部分。 |  | 44| DST_OUT | 8 | r = d * (1 - sa),保留目标像素中不与源重叠的部分。 |  | 45| SRC_ATOP | 9 | r = s * da + d * (1 - sa),源像素覆盖在目标像素上,仅在目标不透明部分显示源像素。 |  | 46| DST_ATOP | 10 | r = d * sa + s * (1 - da),目标像素覆盖在源像素上,仅在源不透明部分显示目标像素。 |  | 47| XOR | 11 | r = s * (1 - da) + d * (1 - sa),仅显示源像素和目标像素中不重叠的部分。 |  | 48| PLUS | 12 | r = min(s + d, 1),源和目标像素的颜色值相加。 |  | 49| MODULATE | 13 | r = s * d,源和目标像素的颜色值相乘。 |  | 50| SCREEN | 14 | 滤色模式,r = s + d - s * d,反转源和目标像素的颜色值,相乘后再反转,结果通常更亮。 |  | 51| OVERLAY | 15 | 叠加模式,根据目标像素的亮度,选择性地应用MULTIPLY或SCREEN模式,增强对比度。 |  | 52| DARKEN | 16 | 变暗模式,rc = s + d - max(s * da, d * sa), ra = s + (1 - sa) * d,取源和目标像素中较暗的颜色值。 |  | 53| LIGHTEN | 17 | 变亮模式,rc = s + d - min(s * da, d * sa), ra = s + (1 - sa) * d,取源和目标像素中较亮的颜色值。 |  | 54| COLOR_DODGE | 18 | 颜色减淡模式,通过减小对比度使目标像素变亮以反映源像素。 |  | 55| COLOR_BURN | 19 | 颜色加深模式,通过增加对比度使目标像素变暗以反映源像素。 |  | 56| HARD_LIGHT | 20 | 强光模式,根据源像素的亮度,选择性地应用MULTIPLY或SCREEN模式。 |  | 57| SOFT_LIGHT | 21 | 柔光模式,根据源像素的亮度,柔和地变亮或变暗目标像素。 |  | 58| DIFFERENCE | 22 | 差值模式,rc = s + d - 2 * (min(s * da, d * sa)), ra = s + (1 - sa) * d,计算源和目标像素颜色值的差异。 |  | 59| EXCLUSION | 23 | 排除模式,rc = s + d - two(s * d), ra = s + (1 - sa) * d,类似于DIFFERENCE,但对比度较低。 |  | 60| MULTIPLY | 24 | 正片叠底,r = s * (1 - da) + d * (1 - sa) + s * d,源和目标像素的颜色值相乘,结果通常更暗。 |  | 61| HUE | 25 | 色相模式,使用源像素的色相,目标像素的饱和度和亮度。 |  | 62| SATURATION | 26 | 饱和度模式,使用源像素的饱和度,目标像素的色相和亮度。 |  | 63| COLOR | 27 | 颜色模式,使用源像素的色相和饱和度,目标像素的亮度。 |  | 64| LUMINOSITY | 28 | 亮度模式,使用源像素的亮度,目标像素的色相和饱和度。 |  | 65 66## PathMeasureMatrixFlags<sup>12+</sup> 67 68路径测量中的矩阵信息维度枚举,常用于控制物体沿路径移动的动画场景。 69 70**系统能力:** SystemCapability.Graphics.Drawing 71 72| 名称 | 值 | 说明 | 73| ----------- | ---- | ------------------------------------------------------------ | 74| GET_POSITION_MATRIX | 0 | 获取位置信息对应的矩阵。 | 75| GET_TANGENT_MATRIX | 1 | 获取切线信息对应的矩阵。 | 76| GET_POSITION_AND_TANGENT_MATRIX | 2 | 获取位置和切线信息对应的矩阵。 | 77 78## SrcRectConstraint<sup>12+</sup> 79 80源矩形区域约束类型枚举,用于在画布绘制图像时指定是否将采样范围限制在源矩形区域内。 81 82**系统能力:** SystemCapability.Graphics.Drawing 83 84| 名称 | 值 | 说明 | 85| ----------- | ---- | ------------------------------------------------------------ | 86| STRICT | 0 | 严格限制采样范围在源矩形区域内,速度较慢。 | 87| FAST | 1 | 允许采样范围超出源矩形范围,速度较快。 | 88 89## ShadowFlag<sup>12+</sup> 90 91控制阴影绘制行为的枚举。 92 93**系统能力:** SystemCapability.Graphics.Drawing 94 95| 名称 | 值 | 说明 | 96| -------------------------- | ---- | ------------------ | 97| NONE | 0 | 不使用任何阴影处理选项。 | 98| TRANSPARENT_OCCLUDER | 1 | 遮挡物是半透明的。 | 99| GEOMETRIC_ONLY | 2 | 仅使用几何阴影效果。 | 100| ALL | 3 | 使用所有可用的阴影处理选项,以生成组合阴影效果,包括半透明遮挡和几何阴影效果。 | 101 102## PathOp<sup>12+</sup> 103 104路径操作类型枚举,可用于合并或裁剪路径等功能。 105 106**系统能力:** SystemCapability.Graphics.Drawing 107 108| 名称 | 值 | 说明 | 109| ---------------------- | ---- | ------------------------------ | 110| DIFFERENCE | 0 | 差集操作。 | 111| INTERSECT | 1 | 交集操作。 | 112| UNION | 2 | 并集操作。 | 113| XOR | 3 | 异或操作。 | 114| REVERSE_DIFFERENCE | 4 | 反向差集操作。 | 115 116## PathIteratorVerb<sup>18+</sup> 117 118迭代器包含的路径操作类型枚举,可用于读取path的操作指令。 119 120**系统能力:** SystemCapability.Graphics.Drawing 121 122| 名称 | 值 | 说明 | 123| ----- | ---- | ------------------------------ | 124| MOVE | 0 | 设置起始点。 | 125| LINE | 1 | 添加线段。 | 126| QUAD | 2 | 添加二阶贝塞尔圆滑曲线。 | 127| CONIC | 3 | 添加圆锥曲线。 | 128| CUBIC | 4 | 添加三阶贝塞尔圆滑曲线。 | 129| CLOSE | 5 | 路径闭合。 | 130| DONE | CLOSE + 1 | 路径设置完成。 | 131 132## TextEncoding 133 134文本的编码类型枚举。 135 136**系统能力:** SystemCapability.Graphics.Drawing 137 138| 名称 | 值 | 说明 | 139| ---------------------- | ---- | ------------------------------ | 140| TEXT_ENCODING_UTF8 | 0 | 使用1个字节表示UTF-8或ASCII。 | 141| TEXT_ENCODING_UTF16 | 1 | 使用2个字节表示大部分unicode。 | 142| TEXT_ENCODING_UTF32 | 2 | 使用4个字节表示全部unicode。 | 143| TEXT_ENCODING_GLYPH_ID | 3 | 使用2个字节表示glyph index。 | 144 145## ClipOp<sup>12+</sup> 146 147画布裁剪方式的枚举。 148 149**系统能力:** SystemCapability.Graphics.Drawing 150 151| 名称 | 值 | 说明 | 示意图 | 152| ------------------ | ---- | ---------------- | -------- | 153| DIFFERENCE | 0 | 将指定区域裁剪(取差集)。 |  | 154| INTERSECT | 1 | 将指定区域保留(取交集)。 |  | 155 156> **说明:** 157> 158> 示意图展示了以INTERSECT方式裁剪一个矩形后,使用不同枚举值继续裁剪一个圆形的结果,绿色区域为最终的裁剪区域。 159 160## FilterMode<sup>12+</sup> 161 162过滤模式枚举。 163 164**系统能力:** SystemCapability.Graphics.Drawing 165 166| 名称 | 值 | 说明 | 167| ------------------- | ---- | ------- | 168| FILTER_MODE_NEAREST | 0 | 邻近过滤模式。 | 169| FILTER_MODE_LINEAR | 1 | 线性过滤模式。 | 170 171## PathDirection<sup>12+</sup> 172 173添加闭合轮廓方向的枚举。 174 175**系统能力:** SystemCapability.Graphics.Drawing 176 177| 名称 | 值 | 说明 | 178| ------------------- | ---- | ------- | 179| CLOCKWISE | 0 | 顺时针方向添加闭合轮廓。 | 180| COUNTER_CLOCKWISE | 1 | 逆时针方向添加闭合轮廓。 | 181 182## PathFillType<sup>12+</sup> 183 184定义路径的填充类型枚举。 185 186**系统能力:** SystemCapability.Graphics.Drawing 187 188| 名称 | 值 | 说明 | 189| ------------------- | ---- | ------- | 190| WINDING | 0 | 绘制区域中的任意一点,向任意方向射出一条射线,对于射线和路径的所有交点,初始计数为0,遇到每个顺时针的交点(路径从射线的左边向右穿过),计数加1,遇到每个逆时针的交点(路径从射线的右边向左穿过),计数减1,若最终的计数结果不为0,则认为这个点在路径内部,需要被涂色;若计数为0则不被涂色。 | 191| EVEN_ODD | 1 | 绘制区域中的任意一点,向任意方向射出一条射线,若这条射线和路径相交的次数是奇数,则这个点被认为在路径内部,需要被涂色;若是偶数则不被涂色。 | 192| INVERSE_WINDING | 2 | WINDING涂色规则取反。 | 193| INVERSE_EVEN_ODD | 3 | EVEN_ODD涂色规则取反。 | 194 195> **说明:**<br> 196> <br> 197> 如图所示圆环为路径,箭头指示路径的方向,p为区域内任意一点,蓝色线条为点p出发的射线,黑色箭头所指为对应填充规则下使用蓝色填充路径的结果。WINDING填充规则下,射线与路径的交点计数为2,不为0,点p被涂色;EVEN_ODD填充规则下,射线与路径的相交次数为2,是偶数,点p不被涂色。 198 199## PointMode<sup>12+</sup> 200 201绘制数组点的方式的枚举。 202 203**系统能力:** SystemCapability.Graphics.Drawing 204 205| 名称 | 值 | 说明 | 206| ------------------ | ---- | ------------- | 207| POINTS | 0 | 分别绘制每个点。 | 208| LINES | 1 | 将每对点绘制为线段。 | 209| POLYGON | 2 | 将点阵列绘制为开放多边形。 | 210 211## FontEdging<sup>12+</sup> 212 213字型边缘效果类型枚举。 214 215**系统能力:** SystemCapability.Graphics.Drawing 216 217| 名称 | 值 | 说明 | 218| ------------------- | ---- | ------- | 219| ALIAS | 0 | 无抗锯齿处理。 | 220| ANTI_ALIAS | 1 | 使用抗锯齿来平滑字型边缘。 | 221| SUBPIXEL_ANTI_ALIAS | 2 | 使用次像素级别的抗锯齿平滑字型边缘,可以获得更平滑的字型渲染效果。 | 222 223## FontHinting<sup>12+</sup> 224 225字型轮廓效果类型枚举。 226 227**系统能力:** SystemCapability.Graphics.Drawing 228 229| 名称 | 值 | 说明 | 230| ------------------- | ---- | ------- | 231| NONE | 0 | 不修改字型轮廓。 | 232| SLIGHT | 1 | 最小限度修改字型轮廓以改善对比度。 | 233| NORMAL | 2 | 修改字型轮廓以提高对比度。 | 234| FULL | 3 | 修改字型轮廓以获得最大对比度。 | 235 236## FontMetricsFlags<sup>12+</sup> 237 238字体度量标志枚举,指示字体度量中的各字段数据是否有效。 239 240**系统能力:** SystemCapability.Graphics.Drawing 241 242| 名称 | 值 | 说明 | 243| ----------------------------- | --------- | ------------------------------ | 244| UNDERLINE_THICKNESS_VALID | 1 << 0 | 表示[FontMetrics](arkts-apis-graphics-drawing-i.md#fontmetrics)结构中的underlineThickness(下划线厚度)字有效。 | 245| UNDERLINE_POSITION_VALID | 1 << 1 | 表示[FontMetrics](arkts-apis-graphics-drawing-i.md#fontmetrics)结构中的underlinePosition(下划线位置)字段有效。 | 246| STRIKETHROUGH_THICKNESS_VALID | 1 << 2 | 表示[FontMetrics](arkts-apis-graphics-drawing-i.md#fontmetrics)结构中strikethroughThickness(删除线厚度)是有效的。| 247| STRIKETHROUGH_POSITION_VALID | 1 << 3 | 表示[FontMetrics](arkts-apis-graphics-drawing-i.md#fontmetrics)结构中strikethroughPosition(删除线位置)字段有效。 | 248| BOUNDS_INVALID | 1 << 4 | 表示[FontMetrics](arkts-apis-graphics-drawing-i.md#fontmetrics)结构中的边界度量值(如top、bottom、xMin、xMax)无效。 | 249 250## RectType<sup>12+</sup> 251 252定义填充网格的矩形类型的枚举。仅在[Lattice](arkts-apis-graphics-drawing-Lattice.md)中使用。 253 254**系统能力:** SystemCapability.Graphics.Drawing 255 256| 名称 | 值 | 说明 | 257| ------------ | ---- | --------------------------------------------------------------- | 258| DEFAULT | 0 | 将图像绘制到矩形网格中。 | 259| TRANSPARENT | 1 | 将矩形网格设置为透明的。 | 260| FIXEDCOLOR | 2 | 将[Lattice](arkts-apis-graphics-drawing-Lattice.md)中fColors数组的颜色绘制到矩形网格中。 | 261 262## PathDashStyle<sup>18+</sup> 263 264路径效果的绘制样式枚举。 265 266**系统能力:** SystemCapability.Graphics.Drawing 267 268| 名称 | 值 | 说明 | 269| ------ | - | ------------------ | 270| TRANSLATE | 0 | 不会随着路径旋转,只会平移。 | 271| ROTATE | 1 | 随着路径的旋转而旋转。 | 272| MORPH | 2 | 随着路径的旋转而旋转,并在转折处进行拉伸或压缩等操作以增加平滑度。 | 273 274## TileMode<sup>12+</sup> 275 276着色器效果平铺模式的枚举。 277 278**系统能力:** SystemCapability.Graphics.Drawing 279 280| 名称 | 值 | 说明 | 281| ---------------------- | ---- | ------------------------------ | 282| CLAMP | 0 | 如果着色器效果超出其原始边界,剩余区域使用着色器的边缘颜色填充。 | 283| REPEAT | 1 | 在水平和垂直方向上重复着色器效果。 | 284| MIRROR | 2 | 在水平和垂直方向上重复着色器效果,交替镜像图像,以便相邻图像始终接合。 | 285| DECAL | 3 | 仅在其原始边界内渲染着色器效果。| 286 287## JoinStyle<sup>12+</sup> 288 289定义线条转角样式的枚举,即画笔在绘制折线段时,在折线转角处的样式。 290 291**系统能力:** SystemCapability.Graphics.Drawing 292 293| 名称 | 值 | 说明 | 示意图 | 294| ----------- | ---- | ----------------------------------------------------------- | -------- | 295| MITER_JOIN | 0 | 转角类型为尖角,如果折线角度比较小,则尖角会很长,需要使用限制值(miter limit)进行限制。 |  | 296| ROUND_JOIN | 1 | 转角类型为圆头。 |  | 297| BEVEL_JOIN | 2 | 转角类型为平头。 |  | 298 299## CapStyle<sup>12+</sup> 300 301定义线帽样式的枚举,即画笔在绘制线段时,在线段头尾端点的样式。 302 303**系统能力:** SystemCapability.Graphics.Drawing 304 305| 名称 | 值 | 说明 | 示意图 | 306| ---------- | ---- | ----------------------------------------------------------- | -------- | 307| FLAT_CAP | 0 | 没有线帽样式,线条头尾端点处横切。 |  | 308| SQUARE_CAP | 1 | 线帽的样式为方框,线条的头尾端点处多出一个方框,方框宽度和线段一样宽,高度是线段宽度的一半。 |  | 309| ROUND_CAP | 2 | 线帽的样式为圆弧,线条的头尾端点处多出一个半圆弧,半圆的直径与线段宽度一致。 |  | 310 311## BlurType<sup>12+</sup> 312 313定义蒙版滤镜模糊中操作类型的枚举。 314 315**系统能力:** SystemCapability.Graphics.Drawing 316 317| 名称 | 值 | 说明 | 示意图 | 318| ------ | - | ------------------ | -------- | 319| NORMAL | 0 | 全面模糊,外圈边缘和内部实体一起模糊。 |  | 320| SOLID | 1 | 内部实体不变,只模糊外圈边缘部分。 |  | 321| OUTER | 2 | 只有外圈边缘模糊,内部实体完全透明。 |  | 322| INNER | 3 | 只有内部实体模糊,外圈边缘清晰。 |  | 323 324## ScaleToFit<sup>12+</sup> 325 326源矩形到目标矩形的缩放方式枚举。 327 328**系统能力:** SystemCapability.Graphics.Drawing 329 330| 名称 | 值 | 说明 | 331| ---------------------- | ---- | ------------------------------ | 332| FILL_SCALE_TO_FIT | 0 | 将源矩形缩放以填充满整个目标矩形,可能会改变源矩形的长宽比。 | 333| START_SCALE_TO_FIT | 1 | 保持源矩形的长宽比进行缩放,并对齐到目标矩形的左上方。 | 334| CENTER_SCALE_TO_FIT | 2 | 保持源矩形的长宽比进行缩放,并居中对齐到目标矩形。 | 335| END_SCALE_TO_FIT | 3 | 保持源矩形的长宽比进行缩放,并对齐到目标矩形的右下方。 | 336 337## RegionOp<sup>12+</sup> 338 339两个区域合并时的操作的枚举。 340 341**系统能力:** SystemCapability.Graphics.Drawing 342 343| 名称 | 值 | 说明 | 示意图 | 344| --------------------- | ---- | ------------------------------ | -------- | 345| DIFFERENCE | 0 | 两个区域的相减操作。 |  | 346| INTERSECT | 1 | 两个区域的相交操作。 |  | 347| UNION | 2 | 两个区域的联合操作。 |  | 348| XOR | 3 | 两个区域的异或操作。 |  | 349| REVERSE_DIFFERENCE | 4 | 两个区域的反向相减操作。 |  | 350| REPLACE | 5 | 两个区域替换操作。 |  | 351 352> **说明:** 353> 354> 示意图展示了一个以红色区域为基础,使用不同枚举值与另一个蓝色区域合并后获得的结果,其中绿色区域为最终得到的区域。 355 356## CornerPos<sup>12+</sup> 357 358圆角位置枚举。 359 360**系统能力:** SystemCapability.Graphics.Drawing 361 362| 名称 | 值 | 说明 | 363| --------------------- | ---- | ------------------------------ | 364| TOP_LEFT_POS | 0 | 左上角圆角位置。 | 365| TOP_RIGHT_POS | 1 | 右上角圆角位置。 | 366| BOTTOM_RIGHT_POS | 2 | 右下角圆角位置。 | 367| BOTTOM_LEFT_POS | 3 | 左下角圆角位置。 | 368