【问题标题】:Direct2D equivalent of GDI InvertRectGDI InvertRect 的 Direct2D 等效项
【发布时间】:2019-05-13 09:41:44
【问题描述】:

我需要将相对复杂程序的 GDI 方法调用转换为等效的 Direct2D 代码。对于大多数 GDI 函数,我可以编写等效代码。但我还没有找到 InvertRect 的任何等效代码。由于绘图是动态完成的,我无法创建(否则将成为性能瓶颈)WICBitmap 来获取像素并反转颜色。

谁能给我一个好的解决方案,好吗?

【问题讨论】:

  • 对,这正是你找不到同等产品的原因,Direct2D 也不想做这种昂贵的事情。重构您的绘图代码,以便您可以重现这些像素,但现在使用一组不同的颜色。作为奖励,考虑到 InvertRect() 产生的颜色通常很糟糕,它应该更令人赏心悦目。

标签: winapi gdi direct2d


【解决方案1】:

如果你想反转一个已经绘制好的区域,相信你可以使用CreateEffect(CLSID_D2D1Flood)创建一个填充纯色的效果,然后将效果的颜色参数设置为白色,然后使用ID2D1DeviceContext::DrawImage与该效果并使用D2D1_COMPOSITE_MODE_XOR 作为compositeMode 参数。

(您可能还需要使用透明白色,现在我想到了...假设XOR也对alpha通道进行操作。您可能需要进行实验。另外,它可能不会工作,我没试过。)

【讨论】:

    【解决方案2】:

    您可以使用Direct2D Effect

    Built-in Effects,你可以使用Invert effect

    【讨论】:

      猜你喜欢
      • 2016-05-08
      • 2012-10-28
      • 2013-10-06
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 2013-10-18
      • 2017-03-21
      • 2012-10-15
      相关资源
      最近更新 更多