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


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

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

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

Этот эффект реализует все режимы с помощью смешивания единицы графической обработки (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 = Source Alpha
  • 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