D2D1路径几何:相交图形的行为

时间:2019-05-09 23:56:06

标签: c++ direct2d

我有以下代码(加上一些错误处理),它们使用一个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();

这将生成以下矩形:enter image description here

如您所见,它们相交的地方没有任何填充。

我想知道:是否可以更改此行为(我也希望填充相交区域)而不必创建其他ID2D1PathGeometry对象?

1 个答案:

答案 0 :(得分:1)

您应该在添加数字之前调用m_geometrySink->SetFillMode(D2D1_FILL_MODE_WINDING);。否则,将使用替代的默认填充模式。