Directx 如何在d2d中设置外部几何图形遮罩,以便d2d仅在该几何图形外部绘制

Directx 如何在d2d中设置外部几何图形遮罩,以便d2d仅在该几何图形外部绘制,directx,direct2d,Directx,Direct2d,我正在使用API,该API要求我在ID2D1Rendertarget上设置外部几何体掩码,以便在此之后的任何绘制调用仅绘制位于该几何体之外的部分图形 解释如何在ID2D1Rendertarget上设置内部几何图形掩码,以便此后的任何绘制调用仅绘制位于该几何图形内的部分图形。我想实现与此相反的功能。这可能吗?非常感谢您的帮助。一种方法是从填充整个渲染目标的矩形中减去几何体。查看上的MSDN页面。下面我有一个小代码示例: ComPtr<ID2D1PathGeometry> inverte

我正在使用API,该API要求我在ID2D1Rendertarget上设置外部几何体掩码,以便在此之后的任何绘制调用仅绘制位于该几何体之外的部分图形


解释如何在ID2D1Rendertarget上设置内部几何图形掩码,以便此后的任何绘制调用仅绘制位于该几何图形内的部分图形。我想实现与此相反的功能。这可能吗?非常感谢您的帮助。

一种方法是从填充整个渲染目标的矩形中减去几何体。查看上的MSDN页面。下面我有一个小代码示例:

ComPtr<ID2D1PathGeometry> invertedGeometry;
ComPtr<ID2D1RectangleGeometry> rectangleGeometry;
d2dFactory->CreateRectangleGeometry(
    { 0, 0, targetWidth, targetHeight }, 
    &rectangleGeometry
    );

ComPtr<ID2D1GeometrySink> geometrySink;
d2dFactory->CreatePathGeometry(&invertedGeometry);
invertedGeometry->Open(&geometrySink);
rectangleGeometry->CombineWithGeometry(
    pathGeometry.Get(), 
    D2D1_COMBINE_MODE_EXCLUDE, 
    D2D1::Matrix3x2F::Identity(), 
    geometrySink.Get()
    );
geometrySink->Close();
ComPtr反相器测量法;
ComPtr矩形几何;
d2dFactory->CreateRectangleGeometry(
{0,0,targetWidth,targetSight},
&矩形几何
);
ComPtr geometrySink;
d2dFactory->CreatePathGeometry(&Inversedgeometry);
反射器测量->开放式(&geometrySink);
矩形几何体->与几何体组合(
pathGeometry.Get(),
D2D1_组合_模式_排除,
D2D1::Matrix3x2F::Identity(),
geometrySink.Get()
);
geometrySink->Close();
使用反转的几何图形作为几何遮罩,而不是原始路径几何图形

第二种方法是将几何体栅格化为位图,并将其用作不透明度遮罩。根据是否要遮罩内部或外部,可以翻转颜色