DWRITE_PAINT_ELEMENT 结构 (dwrite_3.h)

DWRITE_PAINT_ELEMENT 结构

指定画图元素的属性,该元素是与颜色字形关联的可视化树中的一个节点。 这作为输出参数传递给各种 IDWritePaintReader 方法。

有关如何呈现画图元素的详细说明,请参阅 OpenType COLR 表规范。 本主题中的一些说明引用了与每种画图类型关联的 COLR 画图记录格式。

语法

struct DWRITE_PAINT_ELEMENT {
  DWRITE_PAINT_TYPE paintType;
  union {
    struct {
      UINT32 childCount;
    } PAINT_LAYERS;
    PAINT_LAYERS          layers;
    struct {
      UINT32             glyphIndex;
      DWRITE_PAINT_COLOR color;
    } PAINT_SOLID_GLYPH;
    PAINT_SOLID_GLYPH     solidGlyph;
    DWRITE_PAINT_COLOR    solid;
    struct {
      UINT32 extendMode;
      UINT32 gradientStopCount;
      float  x0;
      float  y0;
      float  x1;
      float  y1;
      float  x2;
      float  y2;
    } PAINT_LINEAR_GRADIENT;
    PAINT_LINEAR_GRADIENT linearGradient;
    struct {
      UINT32 extendMode;
      UINT32 gradientStopCount;
      float  x0;
      float  y0;
      float  radius0;
      float  x1;
      float  y1;
      float  radius1;
    } PAINT_RADIAL_GRADIENT;
    PAINT_RADIAL_GRADIENT radialGradient;
    struct {
      UINT32 extendMode;
      UINT32 gradientStopCount;
      float  centerX;
      float  centerY;
      float  startAngle;
      float  endAngle;
    } PAINT_SWEEP_GRADIENT;
    PAINT_SWEEP_GRADIENT  sweepGradient;
    struct {
      UINT32 glyphIndex;
    } PAINT_GLYPH;
    PAINT_GLYPH           glyph;
    struct {
      UINT32     glyphIndex;
      D2D_RECT_F clipBox;
    } PAINT_COLOR_GLYPH;
    PAINT_COLOR_GLYPH     colorGlyph;
    DWRITE_MATRIX         transform;
    struct {
      DWRITE_COLOR_COMPOSITE_MODE mode;
    } PAINT_COMPOSITE;
    PAINT_COMPOSITE       composite;
  } PAINT_UNION;
  PAINT_UNION       paint;
};

成员

paintType

类型: DWRITE_PAINT_TYPE

指定画图类型,从而指定联合的哪个成员有效。

PAINT_UNION

指定画图元素的类型特定属性。

PAINT_UNION.PAINT_LAYERS

DWRITE_PAINT_TYPE_LAYERS 类型的绘制元素有效。 包含一个或多个要按自下而上顺序绘制的子绘制元素。

这对应于 OpenType COLR 表中的 PaintColrLayers 记录。 或者,它可能与 COLR 版本 0 定义的 BaseGlyph 记录相对应。

PAINT_UNION.PAINT_LAYERS.childCount

类型: UINT32

按自下而上的顺序排列的子绘制元素的数目。 使用 IDWritePaintReader::MoveToFirstChildMoveToNextSibling 检索子绘制元素。 使用 MoveToParent 方法返回到父元素。

PAINT_UNION.layers

类型: PAINT_UNION。PAINT_LAYERS

请参阅 PAINT_UNION。PAINT_LAYERS

PAINT_UNION.PAINT_SOLID_GLYPH

对于 DWRITE_PAINT_TYPE_SOLID_GLYPH 类型的画图元素有效。 指定具有纯色填充的字形。 此 paint 元素没有子元素。

这对应于 OpenType COLR 表中两个绘制记录的组合: 一个 PaintGlyph 记录,它引用 PaintSolidPaintVarSolid 记录。 或者,它可能与 COLR 版本 0 定义的 记录相对应。

PAINT_UNION.PAINT_SOLID_GLYPH.glyphIndex

类型: UINT32

定义要填充的形状的字形索引。

PAINT_UNION.PAINT_SOLID_GLYPH.color

类型: DWRITE_PAINT_COLOR

用于填充字形形状的字形颜色。

PAINT_UNION.solidGlyph

类型: PAINT_UNION。PAINT_SOLID_GLYPH

请参阅 PAINT_UNION。PAINT_SOLID_GLYPH

PAINT_UNION.solid

类型: DWRITE_PAINT_COLOR

DWRITE_PAINT_TYPE_SOLID 类型的绘制元素有效。 指定用于填充当前形状或剪辑的纯色。 此 paint 元素没有子元素。

这对应于 OpenType COLR 表中的 PaintSolidPaintVarSolid 记录。

PAINT_UNION.PAINT_LINEAR_GRADIENT

DWRITE_PAINT_TYPE_LINEAR_GRADIENT 类型的绘制元素有效。 指定用于填充当前形状或剪辑的线性渐变。 此 paint 元素没有子元素。

这对应于 OpenType COLR 表中的 PaintLinearGradientPaintVarLinearGradient 记录。

PAINT_UNION.PAINT_LINEAR_GRADIENT.extendMode

类型: UINT32

一个D2D1_EXTEND_MODE值,该值指定如何定义间隔外的颜色。

PAINT_UNION.PAINT_LINEAR_GRADIENT.gradientStopCount

类型: UINT32

渐变停止点数。 使用 IDWritePaintReader::GetGradientStops 方法获取渐变停止点。

PAINT_UNION.PAINT_LINEAR_GRADIENT.x0

类型: float

颜色线起点的 X 坐标。

PAINT_UNION.PAINT_LINEAR_GRADIENT.y0

类型: float

颜色线起点的 Y 坐标。

PAINT_UNION.PAINT_LINEAR_GRADIENT.x1

类型: float

颜色线终点的 X 坐标。

PAINT_UNION.PAINT_LINEAR_GRADIENT.y1

类型: float

颜色线终点的 Y 坐标。

PAINT_UNION.PAINT_LINEAR_GRADIENT.x2

类型: float

颜色线旋转点的 X 坐标。

PAINT_UNION.PAINT_LINEAR_GRADIENT.y2

类型: float

颜色线旋转点的 Y 坐标。

PAINT_UNION.linearGradient

类型: PAINT_UNION。PAINT_LINEAR_GRADIENT

请参阅 PAINT_UNION。PAINT_LINEAR_GRADIENT

PAINT_UNION.PAINT_RADIAL_GRADIENT

对于 DWRITE_PAINT_TYPE_RADIAL_GRADIENT 类型的画图元素有效。 指定用于填充当前形状或剪辑的径向渐变。 此 paint 元素没有子元素。

这对应于 OpenType COLR 表中的 PaintRadialGradientPaintVarRadialGradient 记录。

PAINT_UNION.PAINT_RADIAL_GRADIENT.extendMode

类型: UINT32

一个D2D1_EXTEND_MODE值,该值指定如何定义间隔外的颜色。

PAINT_UNION.PAINT_RADIAL_GRADIENT.gradientStopCount

类型: UINT32

渐变停止点数。 使用 IDWritePaintReader::GetGradientStops 方法获取渐变停止点。

PAINT_UNION.PAINT_RADIAL_GRADIENT.x0

类型: float

起始圆的中心 X 坐标。

PAINT_UNION.PAINT_RADIAL_GRADIENT.y0

类型: float

起始圆的中心 Y 坐标。

PAINT_UNION.PAINT_RADIAL_GRADIENT.radius0

类型: float

起始圆的半径。

PAINT_UNION.PAINT_RADIAL_GRADIENT.x1

类型: float

结束圆的中心 X 坐标。

PAINT_UNION.PAINT_RADIAL_GRADIENT.y1

类型: float

结束圆的中心 Y 坐标。

PAINT_UNION.PAINT_RADIAL_GRADIENT.radius1

类型: float

结束圆的半径。

PAINT_UNION.radialGradient

类型: PAINT_UNION。PAINT_RADIAL_GRADIENT

请参阅 PAINT_UNION。PAINT_RADIAL_GRADIENT

PAINT_UNION.PAINT_SWEEP_GRADIENT

对于 DWRITE_PAINT_TYPE_SWEEP_GRADIENT 类型的绘制元素有效。 指定用于填充当前形状或剪辑的扫描渐变。 此 paint 元素没有子元素。

这对应于 OpenType COLR 表中的 PaintSweepGradientPaintVarSweepGradient 记录。

PAINT_UNION.PAINT_SWEEP_GRADIENT.extendMode

类型: UINT32

一个D2D1_EXTEND_MODE值,该值指定如何定义间隔外的颜色。

PAINT_UNION.PAINT_SWEEP_GRADIENT.gradientStopCount

类型: UINT32

渐变停止点数。 使用 IDWritePaintReader::GetGradientStops 方法获取渐变停止点。

PAINT_UNION.PAINT_SWEEP_GRADIENT.centerX

类型: float

中心 X 坐标。

PAINT_UNION.PAINT_SWEEP_GRADIENT.centerY

类型: float

中心 Y 坐标。

PAINT_UNION.PAINT_SWEEP_GRADIENT.startAngle

类型: float

渐变角度范围的起点,从正 x 轴的方向逆时针度度量。

PAINT_UNION.PAINT_SWEEP_GRADIENT.endAngle

类型: float

渐变角度范围的结束,以逆时针度从正 x 轴的方向测量。

PAINT_UNION.sweepGradient

类型: PAINT_UNION。PAINT_SWEEP_GRADIENT

请参阅 PAINT_UNION。PAINT_SWEEP_GRADIENT

PAINT_UNION.PAINT_GLYPH

DWRITE_PAINT_TYPE_GLYPH 类型的绘制元素有效。 指定要填充的字形形状,或等效的剪辑区域。 此 paint 元素有一个子元素。

子油漆元素定义如何填充字形形状。 子元素可以是单个画图元素,例如线性渐变。 或者,子元素可以是要以字形形状作为剪辑区域呈现的可视化树的根。 这对应于 OpenType COLR 表中的 PaintGlyph 记录。

PAINT_UNION.PAINT_GLYPH.glyphIndex

类型: UINT32

定义要填充的形状的字形的字形索引。

PAINT_UNION.glyph

类型: PAINT_UNION。PAINT_GLYPH

请参阅 PAINT_UNION。PAINT_GLYPH

PAINT_UNION.PAINT_COLOR_GLYPH

对于 DWRITE_PAINT_TYPE_COLOR_GLYPH 类型的绘制元素有效。 指定另一个颜色字形,用作可重用组件。 此 paint 元素有一个子元素,该子元素是指定颜色标志符号的根画图元素。

这对应于 OpenType COLR 表中的 PaintColorGlyph 记录。

PAINT_UNION.PAINT_COLOR_GLYPH.glyphIndex

类型: UINT32

引用的标志符号的字形索引。

PAINT_UNION.PAINT_COLOR_GLYPH.clipBox

类型: D2D_RECT_F

引用的标志符号的剪裁框,以 ems 为单位。 如果颜色字形未指定剪裁框,则这是一个空矩形。 如果它不是空矩形,则客户端需要将子内容剪辑到此框。

PAINT_UNION.colorGlyph

类型: PAINT_UNION。PAINT_COLOR_GLYPH

请参阅 PAINT_UNION。PAINT_COLOR_GLYPH

PAINT_UNION.transform

类型: DWRITE_MATRIX

DWRITE_PAINT_TYPE_TRANSFORM 类型的绘制元素有效。 指定要应用于子内容的仿射转换。 此画图元素有一个子元素,即转换后的内容。

这对应于 OpenType COLR 表中的绘制格式 12 到 31。

PAINT_UNION.PAINT_COMPOSITE

DWRITE_PAINT_TYPE_COMPOSITE 类型的绘制元素有效。 使用指定的合成或混合模式组合两个子绘制元素。 此 paint 元素有两个子元素。 第一个子级是绘图源。 第二个子级是油漆目标 (或背景) 。

这对应于 OpenType COLR 表中的 PaintComposite 记录。

PAINT_UNION.PAINT_COMPOSITE.mode

类型: DWRITE_COLOR_COMPOSITE_MODE

指定合成或混合模式。

PAINT_UNION.composite

类型: PAINT_UNION。PAINT_COMPOSITE

请参阅 PAINT_UNION。PAINT_COMPOSITE

paint

类型: PAINT_UNION

请参阅 PAINT_UNION

要求

要求
最低受支持的客户端 使用 Windows 应用 SDK 1.2 或更高版本的 Windows 10 版本 1809 ()
标头 dwrite_3.h