Поделиться через


Составной эффект

Используйте составной эффект для объединения двух или более изображений. Этот эффект имеет 13 различных составных режимов. T

Составной эффект принимает 2 или более входных данных. При указании двух изображений назначение — это первый вход (индекс 0), а источник — второй вход (индекс 1). Если указать более двух входов, изображения будут композитными, начиная с первого, второго и т. д.

Этот эффект реализует все режимы с использованием единицы смешивания графического процессора (GPU).

CLSID для этого эффекта CLSID_D2D1Composite.

Пример изображения

На изображении здесь показаны 2 скругленными прямоугольниками одинакового размера, которые перекрываются. Синий прямоугольник является источником, а красный прямоугольник — местом назначения. Изображения были обучены режимом Source Over.

Пример изображения, на котором показаны 2 скругленными прямоугольниками одинакового размера, которые перекрываются с помощью режима

Ниже приведен еще один пример использования режима по умолчанию.

Перед изображением 1
первое исходное изображение перед эффектом.
Перед изображением 2
второе изображение перед эффектом.
После
изображение после преобразования.
ComPtr<ID2D1Effect> compositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Composite, &compositeEffect);

compositeEffect->SetInput(0, bitmap);
compositeEffect->SetInput(1, bitmapTwo);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(compositeEffect.Get());
m_d2dContext->EndDraw();

Свойства эффекта

Отображаемое перечисление имен и индексов Тип и значение по умолчанию Описание
Режим
D2D1_COMPOSITE_PROP_MODE
D2D1_COMPOSITE_MODE
D2D1_COMPOSITE_MODE_SOURCE_OVER
Режим, используемый для эффекта.

Типы режимов

В таблице здесь показаны режимы этого эффекта. В уравнениях, перечисленных в таблице, используются следующие элементы:

  • O = выходные данные
  • S = источник
  • SA = исходный альфа-канал
  • D = назначение
  • DA = целевой альфа-канал
Перечисление Уравнение Размер выходного растрового рисунка
D2D1_COMPOSITE_MODE_SOURCE_OVER O = S + (1 SA) * D Объединение исходных и целевых растровых изображений
D2D1_COMPOSITE_MODE_DESTINATION_OVER O = (1 DA) * S + D Объединение исходных и целевых растровых изображений
D2D1_COMPOSITE_MODE_SOURCE_IN O = DA * S Пересечение исходных и целевых растровых изображений
D2D1_COMPOSITE_MODE_DESTINATION_IN O = SA * D Пересечение исходных и целевых растровых изображений
D2D1_COMPOSITE_MODE_SOURCE_OUT O = (1 - DA) * S Область исходного растрового изображения
D2D1_COMPOSITE_MODE_DESTINATION_OUT O = (1 - SA) * D Область целевого растрового рисунка
D2D1_COMPOSITE_MODE_SOURCE_ATOP O = DA * S + (1 - SA) * D Область целевого растрового рисунка
D2D1_COMPOSITE_MODE_DESTINATION_ATOP O = (1 - DA) * S + SA * D Область исходного растрового изображения
D2D1_COMPOSITE_MODE_XOR O = (1 - DA) * S + (1 - SA) * D Объединение исходных и целевых растровых изображений
D2D1_COMPOSITE_MODE_PLUS O = S + D Объединение исходных и целевых растровых изображений
D2D1_COMPOSITE_MODE_SOURCE_COPY O = S Область исходного растрового изображения
D2D1_COMPOSITE_MODE_BOUNDED_SOURCE_COPY O = S (только там, где существует источник) Объединение исходных и целевых растровых изображений. Назначение не перезаписывается, если источник не существует.
D2D1_COMPOSITE_MODE_MASK_INVERT O = (1 D) * S + (1 SA) * D Объединение исходных и целевых растровых изображений. Альфа-значения не изменяются.

На рисунке ниже показан пример каждого из режимов с изображениями с непрозрачностью 1,0 или 0,5.

Пример изображения каждого из режимов с непрозрачностью 1.0 или 0.5.

Образец кода

Для примера этого эффекта скачайте пример режимов составного эффекта Direct2D.

Требования

Требование Значение
Минимальная версия клиента Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows]
Минимальная версия сервера Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows]
Заголовок d2d1effects.h
Библиотека d2d1.lib, dxguid.lib

ID2D1Effect