Partager via


Effet de luminosité

Utilisez l’effet de luminosité pour contrôler la luminosité de l’image.

Le CLSID de cet effet est CLSID_D2D1Brightness.

Exemple d’image

Avant
image avant l’effet.
Après
image après la transformation.
ComPtr<ID2D1Effect> brightnessEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Brightness, &brightnessEffect);

brightnessEffect->SetValue(D2D1_BRIGHTNESS_PROP_BLACK_POINT, D2D1::Vector2F(0.0f, 0.2f));

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

Propriétés de l’effet

Nom d’affichage de la propriété Type et valeur par défaut Description
Point blanc
D2D1_BRIGHTNESS_PROP_WHITE_POINT
D2D1_VECTOR_2F
{1.0f, 1.0f}
Partie supérieure de la courbe de transfert de luminosité. Le point blanc ajuste l’apparence des parties les plus brillantes de l’image. Cette propriété est destinée à la fois à la valeur x et à la valeur y, dans cet ordre. Chacune des valeurs de cette propriété est comprise entre 0 et 1, inclus.
BlackPoint
D2D1_BRIGHTNESS_PROP_BLACK_POINT
D2D1_VECTOR_2F
{0.0f, 0.0f}
Partie inférieure de la courbe de transfert de luminosité. Le point noir ajuste l’apparence des parties les plus sombres de l’image. Cette propriété est destinée à la fois à la valeur x et à la valeur y, dans cet ordre. Chacune des valeurs de cette propriété est comprise entre 0 et 1, inclus.

Cet effet utilise les points blancs et noirs spécifiés pour générer une fonction de transfert utilisée pour ajuster la bitmap. L’équation suivante décrit la fonction de transfert. Les intensités d’entrée sont définies entre 0 et 1.

algorithme de luminosité

L’algorithme d’effet implémente une équation qui crée la fonction de transfert. Nous utilisons cette fonction pour ajuster les pixels de l’image. Les valeurs x et y du point noir et du point blanc sont les coordonnées dans deux dimensions qui sont connectées pour former la transformation. Chaque partie de l’équation de sortie finale :

  1. Convertit les données d’image de l’espace linéaire en espace non linéaire à l’aide de cette équation:helper, fonction 1

  2. Ajuste l’image en fonction de ces valeurs :

    • input est les valeurs d’intensité du pixel d’image d’entrée comprises entre 0 et 1.

    • *Pt blanc (x, y)*emplacement de la courbe de transformation pour des intensités de pixels plus vives.

    • Pt noir (x, y) est l’emplacement de la courbe de transformation pour les intensités de pixels plus faibles.

  3. Convertit les données d’image en espace linéaire à l’aide de cette équation : fonction d’assistance 2

L’équation de sortie finale et les composants sont présentés ici.

calculs complets pour l’ajustement de la luminosité

Bitmap de sortie

La taille de l’image bitmap de sortie est identique à la taille bitmap d’entrée.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8 et mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store]
Serveur minimal pris en charge Windows 8 et mise à jour de plateforme pour Windows 7 [applications de bureau | Applications du Windows Store]
En-tête d2d1effects.h
Bibliothèque d2d1.lib, dxguid.lib

ID2D1Effect