我需要将相对复杂程序的GDI方法调用转换为等效的Direct2D代码。对于大多数GDI函数,我可以编写等效的代码。但我没有找到任何与InvertRect相同的代码。由于绘图是动态完成的,我无法创建(或者它将是性能瓶颈)WICBitmap来获取像素并反转颜色。
有人能建议我一个好的解决方案吗?
如果你想反转已经绘制的区域,我相信你可以使用CreateEffect(CLSID_D2D1Flood)
创建一个用纯色填充的效果,然后将效果的颜色参数设置为白色,然后使用ID2D1DeviceContext::DrawImage
效果并使用D2D1_COMPOSITE_MODE_XOR
compositeMode
参数。
(你可能还需要使用透明的白色,现在我想起来了......假设XOR也在alpha通道上运行。你可能需要进行实验。而且,它可能不起作用,我还没试过。)
你可以使用Direct2D Effect。
有Built-in Effects,你可以使用Invert effect。