Saturation effect

Use this effect to alter the saturation of an image. The saturation effect is a specialization of the color matrix effect.

The CLSID for this effect is CLSID_D2D1Saturation.

Example image

The example here shows the input and output images of the saturation effect with a saturation of 0%.

Before
the image before the effect.
After
the image after the transform.
ComPtr<ID2D1Effect> saturationEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Saturation, &saturationEffect);

saturationEffect->SetInput(0, bitmap);

saturationEffect->SetValue(D2D1_SATURATION_PROP_SATURATION, 0.0f);

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

The effect calculates a color matrix based on the saturation value (s in the equation here) you specify with the D2D1_SATURATION_PROP_SATURATION property. The matrix equation is shown here.

formula for calculating a saturation matrix.

The matrix created depends only on the saturation value. You can use the color matrix effect if you need a specific matrix.

This effect consumes and outputs premultiplied alpha images. The effect won't work on straight alpha images unless they are fully opaque.

Effect properties

Display name and index enumeration Type and default value Description
Saturation
D2D1_SATURATION_PROP_SATURATION
FLOAT
0.5f
The saturation of the image. You can set the saturation to a value between 0 and 1. If you set it to 1 the output image is fully saturated. If you set it to 0 the output image is monochrome. The saturation value is unitless.

Requirements

Minimum supported client Windows 8 and Platform Update for Windows 7 [desktop apps | Windows Store apps]
Minimum supported server Windows 8 and Platform Update for Windows 7 [desktop apps | Windows Store apps]
Header d2d1effects.h
Library d2d1.lib, dxguid.lib

ID2D1Effect