D2D1 路径几何:相交图形的行为
D2D1 Path Geometry: Behavior of intersecting figures
我有以下代码(+ 一些错误处理)使用单个 ID2D1PathGeometry 实例生成 2 个矩形:
m_geometry->Open(&m_geometrySink);
m_geometrySink->BeginFigure(D2D1::Point2F(100, 100), D2D1_FIGURE_BEGIN_FILLED);
m_geometrySink->AddLine(D2D1::Point2F(300, 100));
m_geometrySink->AddLine(D2D1::Point2F(300, 300));
m_geometrySink->AddLine(D2D1::Point2F(100, 300));
m_geometrySink->EndFigure(D2D1_FIGURE_END_CLOSED);
m_geometrySink->BeginFigure(D2D1::Point2F(200, 200), D2D1_FIGURE_BEGIN_FILLED);
m_geometrySink->AddLine(D2D1::Point2F(400, 200));
m_geometrySink->AddLine(D2D1::Point2F(400, 400));
m_geometrySink->AddLine(D2D1::Point2F(200, 400));
m_geometrySink->EndFigure(D2D1_FIGURE_END_CLOSED);
m_geometrySink->Close();
如您所见,它们相交的地方没有任何填充。
我想知道:是否可以更改此行为(我也希望交叉区域也被填充)而无需创建额外的 ID2D1PathGeometry 对象?
您应该在添加数字之前调用 m_geometrySink->SetFillMode(D2D1_FILL_MODE_WINDING);
。否则将使用替代的默认填充模式。
我有以下代码(+ 一些错误处理)使用单个 ID2D1PathGeometry 实例生成 2 个矩形:
m_geometry->Open(&m_geometrySink);
m_geometrySink->BeginFigure(D2D1::Point2F(100, 100), D2D1_FIGURE_BEGIN_FILLED);
m_geometrySink->AddLine(D2D1::Point2F(300, 100));
m_geometrySink->AddLine(D2D1::Point2F(300, 300));
m_geometrySink->AddLine(D2D1::Point2F(100, 300));
m_geometrySink->EndFigure(D2D1_FIGURE_END_CLOSED);
m_geometrySink->BeginFigure(D2D1::Point2F(200, 200), D2D1_FIGURE_BEGIN_FILLED);
m_geometrySink->AddLine(D2D1::Point2F(400, 200));
m_geometrySink->AddLine(D2D1::Point2F(400, 400));
m_geometrySink->AddLine(D2D1::Point2F(200, 400));
m_geometrySink->EndFigure(D2D1_FIGURE_END_CLOSED);
m_geometrySink->Close();
如您所见,它们相交的地方没有任何填充。
我想知道:是否可以更改此行为(我也希望交叉区域也被填充)而无需创建额外的 ID2D1PathGeometry 对象?
您应该在添加数字之前调用 m_geometrySink->SetFillMode(D2D1_FILL_MODE_WINDING);
。否则将使用替代的默认填充模式。