CD2DGeometry 类

ID2D1Geometry 的包装器。

语法

class CD2DGeometry : public CD2DResource;

成员

公共构造函数

名称 描述
CD2DGeometry::CD2DGeometry 构造 CD2DGeometry 对象。
CD2DGeometry::~CD2DGeometry 析构函数。 在销毁 D2D 几何对象时调用。

公共方法

名称 描述
CD2DGeometry::Attach 将现有资源接口附加到对象
CD2DGeometry::CombineWithGeometry 将此几何图形与指定的几何图形组合在一起,并将结果存储在 ID2D1SimplifiedGeometrySink 中。
CD2DGeometry::CompareWithGeometry 描述此几何图形与指定的几何图形之间的交集。 使用指定的平展容差执行比较。
CD2DGeometry::ComputeArea 在使用指定的矩形转换和使用指定的容差平展几何图形后,计算该几何图形的区域。
CD2DGeometry::ComputeLength 计算几何图形的长度,就像将每个段展开成一行中一样。
CD2DGeometry::ComputePointAtLength 在使用指定的矩形转换和使用指定的容差平展几何图形后,计算几何图形上指定距离的点和正切向量。
CD2DGeometry::Destroy 销毁 CD2DGeometry 对象。 (重写 CD2DResource::Destroy
CD2DGeometry::Detach 从对象中拆离资源接口
CD2DGeometry::FillContainsPoint 指示几何图形填充的区域是否包含指定平展容差下的指定点。
CD2DGeometry::Get 返回 ID2D1Geometry 接口
CD2DGeometry::GetBounds
CD2DGeometry::GetWidenedBounds 按指定的笔划样式宽度和样式扩大并按指定矩阵转换后,获取几何图形的边框。
CD2DGeometry::IsValid 检查资源的有效性(重写 CD2DResource::IsValid)。
CD2DGeometry::Outline 计算几何图形的轮廓,并将结果写入 ID2D1SimplifiedGeometrySink。
CD2DGeometry::Simplify 创建仅包含线条和(可选)立方贝塞尔曲线的简化几何图形版本,并将结果写入 ID2D1SimplifiedGeometrySink。
CD2DGeometry::StrokeContainsPoint 确定几何图形的笔划是否包含具有指定笔划粗细、样式和转换的指定点。
CD2DGeometry::Tessellate 在使用指定的矩阵转换并使用指定的容差平展几何图形后,创建一组覆盖该几何图形的顺时针方向的三角形。
CD2DGeometry::Widen 在按指定的矩阵转换并使用指定的容差平展后,按指定的笔划扩大几何图形并将结果写入 ID2D1SimplifiedGeometrySink。

公共运算符

“属性” 描述
CD2DGeometry::operator ID2D1Geometry* 返回 ID2D1Geometry 接口

受保护的数据成员

名称 描述
CD2DGeometry::m_pGeometry 指向 ID2D1Geometry 的指针。

继承层次结构

CObject

CD2DResource

CD2DGeometry

要求

标头:afxrendertarget.h

CD2DGeometry::~CD2DGeometry

析构函数。 在销毁 D2D 几何对象时调用。

virtual ~CD2DGeometry();

CD2DGeometry::Attach

将现有资源接口附加到对象

void Attach(ID2D1Geometry* pResource);

参数

pResource
现有资源接口。 不能为 NULL

CD2DGeometry::CD2DGeometry

构造 CD2DGeometry 对象。

CD2DGeometry(
    CRenderTarget* pParentTarget,
    BOOL bAutoDestroy = TRUE);

参数

pParentTarget
指向渲染目标的指针。

bAutoDestroy
指示对象将由所有者 (pParentTarget) 销毁。

CD2DGeometry::CombineWithGeometry

将此几何图形与指定的几何图形组合在一起,并将结果存储在 ID2D1SimplifiedGeometrySink 中。

BOOL CombineWithGeometry(
    CD2DGeometry& inputGeometry,
    D2D1_COMBINE_MODE combineMode,
    const D2D1_MATRIX_3X2_F& inputGeometryTransform,
    ID2D1SimplifiedGeometrySink* geometrySink,
    FLOAT flatteningTolerance = D2D1_DEFAULT_FLATTENING_TOLERANCE) const;

参数

inputGeometry
要与此实例合并的几何图形。

combineMode
要执行的合并操作的类型。

inputGeometryTransform
在组合之前应用于 inputGeometry 的转换。

geometrySink
合并操作的结果。

flatteningTolerance
几何图形的多边形近似中两点间距离的上限。 值越小,生成的结果就越准确,但执行速度会变慢。

返回值

如果该方法成功,它会返回 TRUE。 否则,返回 FALSE。

CD2DGeometry::CompareWithGeometry

描述此几何图形与指定的几何图形之间的交集。 使用指定的平展容差执行比较。

D2D1_GEOMETRY_RELATION CompareWithGeometry(
    CD2DGeometry& inputGeometry,
    const D2D1_MATRIX_3X2_F& inputGeometryTransform,
    FLOAT flatteningTolerance = D2D1_DEFAULT_FLATTENING_TOLERANCE) const;

参数

inputGeometry
要测试的几何图形。

inputGeometryTransform
要应用于 inputGeometry 的转换。

flatteningTolerance
几何图形的多边形近似中两点间距离的上限。 值越小,生成的结果就越准确,但执行速度会变慢。

返回值

如果该方法成功,它会返回 TRUE。 否则,返回 FALSE。

CD2DGeometry::ComputeArea

在使用指定的矩形转换和使用指定的容差平展几何图形后,计算该几何图形的区域。

BOOL ComputeArea(
    const D2D1_MATRIX_3X2_F& worldTransform,
    FLOAT& area,
    FLOAT flatteningTolerance = D2D1_DEFAULT_FLATTENING_TOLERANCE) const;

参数

worldTransform
在计算几何图形的区域之前应用于该图形的转换。

area
此方法返回时,包含指向此几何图形的已转换、已平展版本的区域的指针。 必须为此参数分配存储。

flatteningTolerance
几何图形的多边形近似中两点间距离的上限。 值越小,生成的结果就越准确,但执行速度会变慢。

返回值

如果该方法成功,它会返回 TRUE。 否则,返回 FALSE。

CD2DGeometry::ComputeLength

计算几何图形的长度,就像将每个段展开成一行中一样。

BOOL ComputeLength(
    const D2D1_MATRIX_3X2_F& worldTransform,
    FLOAT& length,
    FLOAT flatteningTolerance = D2D1_DEFAULT_FLATTENING_TOLERANCE) const;

参数

worldTransform
在计算几何图形的长度之前应用于该图形的转换。

length
此方法返回时,包含指向几何图形长度的指针。 对于封闭几何图形,长度包括隐式结束段。 必须为此参数分配存储。

flatteningTolerance
几何图形的多边形近似中两点间距离的上限。 值越小,生成的结果就越准确,但执行速度会变慢。

返回值

如果该方法成功,它会返回 TRUE。 否则,返回 FALSE。

CD2DGeometry::ComputePointAtLength

在使用指定的矩形转换和使用指定的容差平展几何图形后,计算几何图形上指定距离的点和正切向量。

BOOL ComputePointAtLength(
    FLOAT length,
    const D2D1_MATRIX_3X2_F& worldTransform,
    CD2DPointF& point,
    CD2DPointF& unitTangentVector,
    FLOAT flatteningTolerance = D2D1_DEFAULT_FLATTENING_TOLERANCE) const;

参数

length
要查找的点和正切在几何图形上的距离。 如果此距离小于 0,此方法会计算几何图形中的第一个点。 如果此距离大于几何图形的长度,此方法将计算几何图形中的最后一个点。

worldTransform
在计算指定的点和正切之前应用于几何图形的转换。

point
几何图形上指定距离处的位置。 如果几何图形为空,则此点包含 NaN 作为其 x 值和 y 值。

unitTangentVector
此方法返回时,包含指向几何图形上指定距离处的正切向量的指针。 如果几何图形为空,则此向量包含 NaN 作为其 x 值和 y 值。 必须为此参数分配存储。

flatteningTolerance
几何图形的多边形近似中两点间距离的上限。 值越小,生成的结果就越准确,但执行速度会变慢。

返回值

如果该方法成功,它会返回 TRUE。 否则,返回 FALSE。

CD2DGeometry::Destroy

销毁 CD2DGeometry 对象。

virtual void Destroy();

CD2DGeometry::Detach

从对象中拆离资源接口

ID2D1Geometry* Detach();

返回值

指向拆离的资源接口的指针。

CD2DGeometry::FillContainsPoint

指示几何图形填充的区域是否包含指定平展容差下的指定点。

BOOL FillContainsPoint(
    CD2DPointF point,
    const D2D1_MATRIX_3X2_F& worldTransform,
    BOOL* contains,
    FLOAT flatteningTolerance = D2D1_DEFAULT_FLATTENING_TOLERANCE) const;

参数

point
要测试的点。

worldTransform
在测试是否包含之前应用于几何图形的转换。

contains
此方法返回时,如果几何图形填充的区域包含点,则包含为 TRUE 的布尔值;否则为 FALSE。 必须为此参数分配存储。

flatteningTolerance
按其计算精确几何路径和路径交集的数值准确度。 缺少的填充量小于容差的点仍被考虑在内。 值越小,生成的结果就越准确,但执行速度会变慢。

返回值

如果该方法成功,它会返回 TRUE。 否则,返回 FALSE。

CD2DGeometry::Get

返回 ID2D1Geometry 接口

ID2D1Geometry* Get();

返回值

返回指向 ID2D1Geometry 接口的指针;如果尚未初始化对象,则返回 NULL。

CD2DGeometry::GetBounds

BOOL GetBounds(
const D2D1_MATRIX_3X2_F& worldTransform,
CD2DRectF& bounds) const;

参数

worldTransform
bounds

返回值

CD2DGeometry::GetWidenedBounds

按指定的笔划样式宽度和样式扩大并按指定矩阵转换后,获取几何图形的边框。

BOOL GetWidenedBounds(
    FLOAT strokeWidth,
    ID2D1StrokeStyle* strokeStyle,
    const D2D1_MATRIX_3X2_F& worldTransform,
    CD2DRectF& bounds,
    FLOAT flatteningTolerance = D2D1_DEFAULT_FLATTENING_TOLERANCE) const;

参数

strokeWidth
通过勾勒几何图形的轮廓扩大该图形的量。

strokeStyle
用于扩大几何图形的笔划样式。

worldTransform
在转换几何图形和勾勒几何图形后应用于几何图形的转换。

bounds
此方法返回时,包含已扩大的几何图形的边界。 必须为此参数分配存储。

flatteningTolerance
几何图形的多边形近似中两点间距离的上限。 值越小,生成的结果就越准确,但执行速度会变慢。

返回值

如果该方法成功,它会返回 TRUE。 否则,返回 FALSE。

CD2DGeometry::IsValid

检查资源有效性

virtual BOOL IsValid() const;

返回值

如果资源有效,则为 TRUE;否则为 FALSE。

CD2DGeometry::m_pGeometry

指向 ID2D1Geometry 的指针。

ID2D1Geometry* m_pGeometry;

CD2DGeometry::operator ID2D1Geometry*

返回 ID2D1Geometry 接口

operator ID2D1Geometry*();

返回值

返回指向 ID2D1Geometry 接口的指针;如果尚未初始化对象,则返回 NULL。

CD2DGeometry::Outline

计算几何图形的轮廓,并将结果写入 ID2D1SimplifiedGeometrySink。

BOOL Outline(
    const D2D1_MATRIX_3X2_F& worldTransform,
    ID2D1SimplifiedGeometrySink* geometrySink,
    FLOAT flatteningTolerance = D2D1_DEFAULT_FLATTENING_TOLERANCE) const;

参数

worldTransform
要应用于几何图形轮廓的转换。

geometrySink
向其追加几何图形转换轮廓的 ID2D1SimplifiedGeometrySink。

flatteningTolerance
几何图形的多边形近似中两点间距离的上限。 值越小,生成的结果就越准确,但执行速度会变慢。

返回值

如果该方法成功,它会返回 TRUE。 否则,返回 FALSE。

CD2DGeometry::Simplify

创建仅包含线条和(可选)立方贝塞尔曲线的简化几何图形版本,并将结果写入 ID2D1SimplifiedGeometrySink。

BOOL Simplify(
    D2D1_GEOMETRY_SIMPLIFICATION_OPTION simplificationOption,
    const D2D1_MATRIX_3X2_F& worldTransform,
    ID2D1SimplifiedGeometrySink* geometrySink,
    FLOAT flatteningTolerance = D2D1_DEFAULT_FLATTENING_TOLERANCE) const;

参数

simplificationOption
指定简化的几何图形是否应包含曲线的值。

worldTransform
要应用于简化的几何图形的转换。

geometrySink
将简化的几何图形追加到的 ID2D1SimplifiedGeometrySink。

flatteningTolerance
几何图形的多边形近似中两点间距离的上限。 值越小,生成的结果就越准确,但执行速度会变慢。

返回值

如果该方法成功,它会返回 TRUE。 否则,返回 FALSE。

CD2DGeometry::StrokeContainsPoint

确定几何图形的笔划是否包含具有指定笔划粗细、样式和转换的指定点。

BOOL StrokeContainsPoint(
    CD2DPointF point,
    FLOAT strokeWidth,
    ID2D1StrokeStyle* strokeStyle,
    const D2D1_MATRIX_3X2_F& worldTransform,
    BOOL* contains,
    FLOAT flatteningTolerance = D2D1_DEFAULT_FLATTENING_TOLERANCE) const;

参数

point
要测试包含的点。

strokeWidth
要应用的笔划粗细。

strokeStyle
要应用的笔划样式。

worldTransform
要应用于绘制的几何图形的转换。

contains
此方法返回时,如果几何图形的笔划包含指定点,则包含设置为 TRUE 的布尔值;否则为 FALSE。 必须为此参数分配存储。

flatteningTolerance
按其计算精确几何路径和路径交集的数值准确度。 缺少的笔划小于容差的点仍被考虑在内。 值越小,生成的结果就越准确,但执行速度会变慢。

返回值

如果该方法成功,它会返回 TRUE。 否则,返回 FALSE。

CD2DGeometry::Tessellate

在使用指定的矩阵转换并使用指定的容差平展几何图形后,创建一组覆盖该几何图形的顺时针方向的三角形。

BOOL Tessellate(
    const D2D1_MATRIX_3X2_F& worldTransform,
    ID2D1TessellationSink* tessellationSink,
    FLOAT flatteningTolerance = D2D1_DEFAULT_FLATTENING_TOLERANCE) const;

参数

worldTransform
要应用于此几何图形的转换,或者为 NULL。

tessellationSink
将分割内容追加到 ID2D1TessellationSink。

flatteningTolerance
几何图形的多边形近似中两点间距离的上限。 值越小,生成的结果就越准确,但执行速度会变慢。

返回值

如果该方法成功,它会返回 TRUE。 否则,返回 FALSE。

CD2DGeometry::Widen

在按指定的矩阵转换并使用指定的容差平展后,按指定的笔划扩大几何图形并将结果写入 ID2D1SimplifiedGeometrySink。

BOOL Widen(
    FLOAT strokeWidth,
    ID2D1StrokeStyle* strokeStyle,
    const D2D1_MATRIX_3X2_F& worldTransform,
    ID2D1SimplifiedGeometrySink* geometrySink,
    FLOAT flatteningTolerance = D2D1_DEFAULT_FLATTENING_TOLERANCE) const;

参数

strokeWidth
要扩大几何图形的量。

strokeStyle
要应用于几何图形的笔划样式,或者为 NULL。

worldTransform
在扩大几何图形后应用于该图形的转换。

geometrySink
将扩大的几何图形追加到的 ID2D1SimplifiedGeometrySink。

flatteningTolerance
几何图形的多边形近似中两点间距离的上限。 值越小,生成的结果就越准确,但执行速度会变慢。

返回值

如果该方法成功,它会返回 TRUE。 否则,返回 FALSE。

另请参阅