Арифметический составной эффект
Используйте арифметический составной эффект для объединения двух изображений с использованием взвешенной суммы пикселей из входных изображений.
CLSID для этого эффекта CLSID_D2D1ArithmeticComposite.
- Формула
- Пример изображения
- Свойства эффекта
- Выходное растровое изображение
- Requirements
- Связанные темы
Формула
Для вычисления этого эффекта используется формула.
Outputrgba = 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 |