Direct2D эквивалент GDI InvertRect - PullRequest
       16

Direct2D эквивалент GDI InvertRect

0 голосов
/ 12 декабря 2018

Мне нужно преобразовать вызовы методов GDI относительно сложной программы в эквивалентный код Direct2D.Для большинства функций GDI я мог бы написать эквивалентный код.Но я не нашел никакого эквивалентного кода для InvertRect.Поскольку рисование выполняется динамически, я не могу создать (или это будет узкое место в производительности) WICBitmap для получения пикселей и инвертирования цвета.

Может кто-нибудь предложить мне хорошее решение, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Если вы хотите инвертировать уже нарисованную область, я полагаю, что вы можете использовать CreateEffect(CLSID_D2D1Flood), чтобы создать эффект, который заполняется сплошным цветом, затем установить параметр цвета для эффекта белого, а затем использовать ID2D1DeviceContext::DrawImage сэтот эффект и используйте D2D1_COMPOSITE_MODE_XOR для параметра compositeMode.

(Вам также может понадобиться использовать прозрачный белый , теперь, когда я думаю об этом ... предполагая, что XOR также работаетна альфа-канале. Возможно, вам придется поэкспериментировать. Кроме того, он может не работать, я не пробовал.)

0 голосов
/ 12 декабря 2018

Вы можете использовать Direct2D Effect .

Есть Встроенные эффекты , и вы можете использовать Инвертировать эффект .

...