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 的指针。 |
继承层次结构
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。