我有以下代码(加上一些错误处理),它们使用一个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对象?
答案 0 :(得分:1)
您应该在添加数字之前调用m_geometrySink->SetFillMode(D2D1_FILL_MODE_WINDING);
。否则,将使用替代的默认填充模式。