一種方法是從填充整個渲染目標的矩形中減去幾何圖形。查看combining geometries上的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();
使用反轉幾何作爲幾何蒙版,而不是原始路徑幾何。
第二種方法是將您的幾何圖形柵格化爲位圖並將其用作不透明蒙版。您可以根據是否需要內部或外部遮罩來翻轉顏色。
對我來說很合理 –