Арифметический составной эффект
Используйте арифметический составной эффект, чтобы объединить 2 изображения с помощью взвешаемой суммы пикселей из входных изображений.
CLSID для этого эффекта CLSID_D2D1ArithmeticComposite.
- формулы
- пример изображения
- свойства эффекта
- растровое изображение вывода
- требования
- связанные разделы
Формула
Формула здесь используется для вычисления этого эффекта.
Выходныеrgba = C1 * Sourcergba * Destinationrgba + C2 * Sourcergba + C3 * Destinationrgba + C4
Где заданы коэффициенты C1, C2, C3, C4.
Коэффициенты сопоставляют значения в D2D1_VECTOR_4F (x, y, z, w):
- x = C1
- y = C2
- z = C3
- w = C4
Пример изображения
Простой пример заключается в добавлении исходных и целевых пикселей. В примере 2 округленные прямоугольники составятся вместе. Исходный прямоугольник синий, а целевой — красный.
Изображение здесь представляет собой выходные данные арифметического составного эффекта с коэффициентами уравнения, заданными здесь.
- C1 = 0
- C2 = 1
- C3 = 1
- C4 = 0
Результатом является добавление значений пикселей для источника и назначения. Области, в которых прямоугольники не перекрывают значения RGBA, имеют значение 0. Где прямоугольники перекрывают цвет, так как значения R и B являются максимальными.
Ниже приведен еще один пример изображения с кодом.
Перед изображением 1 |
---|
![]() |
Перед изображением 2 |
![]() |
После |
![]() |
ComPtr<ID2D1Effect> arithmeticCompositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ArithmeticComposite, &arithmeticCompositeEffect);
arithmeticCompositeEffect->SetInput(0, bitmap);
arithmeticCompositeEffect->SetInput(1, bitmapTwo);
arithmeticCompositeEffect->SetValue(D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS, D2D1::Vector4F(0.0f, 0.5f, 0.5f, 0.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(arithmeticCompositeEffect.Get());
m_d2dContext->EndDraw();
Свойства эффекта
Отображаемое имя и перечисление индексов | Описание |
---|---|
Коэффициенты D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS |
Коэффициенты для уравнения, используемого для составного двух входных изображений. Коэффициенты неуправляемы и несвязаны. Тип D2D1_VECTOR_4F. Значение по умолчанию — {1.0f, 0.0f, 0.0f, 0.0f}. |
ClampOutput D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT |
Эффект зажимает значения цвета в диапазоне от 0 до 1, прежде чем эффект передает значения следующему эффекту в графе. Если задано значение TRUE, эффект зацепнет значения. Если задано значение FALSE, эффект не зацепляет значения цвета, но другие эффекты и выходная поверхность могут зажать значения, если они не имеют достаточной точности. Тип — BOOL. Значение по умолчанию — FALSE. |
Выходной растровый рисунок
Выходное растровое изображение зависит от значений коэффициента. Это возможные размеры выходных растровых изображений.
- Если C1 является единственным ненулевым коэффициентом, размер выходных данных — пересечение входных прямоугольников.
- Если C2 является единственным ненулевым коэффициентом, размер выходных данных — это размер прямоугольника Источника.
- Если C3 является единственным ненулевым коэффициентом, размер выходных данных — это размер прямоугольника назначения.
- Если все коэффициенты равны нулю, выходной размер является пустым прямоугольником.
- Для всех других значений коэффициентов выходной размер является объединением входных прямоугольников.
Требования
Требование | Ценность |
---|---|
Минимальный поддерживаемый клиент | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Минимальный поддерживаемый сервер | Windows 8 и Обновление платформы для Windows 7 [классические приложения | Приложения Магазина Windows] |
Заголовок | d2d1effects.h |
Библиотека | d2d1.lib, dxguid.lib |