énumération D2D1_ALPHA_MODE (dcommon.h)

Spécifie la façon dont la valeur alpha d’une bitmap ou d’une cible de rendu doit être traitée.

Syntax

typedef enum D2D1_ALPHA_MODE {
  D2D1_ALPHA_MODE_UNKNOWN = 0,
  D2D1_ALPHA_MODE_PREMULTIPLIED = 1,
  D2D1_ALPHA_MODE_STRAIGHT = 2,
  D2D1_ALPHA_MODE_IGNORE = 3,
  D2D1_ALPHA_MODE_FORCE_DWORD = 0xffffffff
} ;

Constantes

 
D2D1_ALPHA_MODE_UNKNOWN
Valeur : 0
La valeur alpha peut ne pas être significative.
D2D1_ALPHA_MODE_PREMULTIPLIED
Valeur : 1
La valeur alpha a été prémultipliée. Chaque couleur est d’abord mise à l’échelle par la valeur alpha. La valeur alpha elle-même est la même dans l’alpha droit et prémultiplié. En règle générale, aucune valeur de canal de couleur n’est supérieure à la valeur du canal alpha. Si la valeur d’un canal de couleur dans un format prémultiplié est supérieure au canal alpha, le mélange mathématique source-over standard aboutit à un mélange additif.
D2D1_ALPHA_MODE_STRAIGHT
Valeur : 2
La valeur alpha n’a pas été prémultipliée. Le canal alpha indique la transparence de la couleur.
D2D1_ALPHA_MODE_IGNORE
Valeur : 3
La valeur alpha est ignorée.
D2D1_ALPHA_MODE_FORCE_DWORD
Valeur : 0xffffffff

Remarques

L’énumération D2D1_ALPHA_MODE est utilisée avec l’énumération D2D1_PIXEL_FORMAT pour spécifier le mode alpha d’une cible de rendu ou d’une bitmap. Différentes cibles de rendu et bitmaps prennent en charge différents modes alpha. Pour obtenir une liste, consultez Formats de pixels et modes alpha pris en charge.

Les différences entre l’alpha droit et l’alpha prémultiplié

Lors de la description d’une couleur RVBA à l’aide d’un alpha droit, la valeur alpha de la couleur est stockée dans le canal alpha. Par exemple, pour décrire une couleur rouge opaque à 60 %, vous devez utiliser les valeurs suivantes : (255, 0, 0, 255 * 0,6) = (255, 0, 0, 153). La valeur 255 indique le rouge complet et 153 (soit 60 % de 255) indique que la couleur doit avoir une opacité de 60 %.

Lors de la description d’une couleur RGBA à l’aide de l’alpha prémultiplié, chaque couleur est multipliée par la valeur alpha : (255 * 0,6, 0 * 0,6, 0,6, 255 * 0,6) = (153, 0, 0, 153).

Quel que soit le mode alpha de la cible de rendu, D2D1_COLOR_F valeurs sont toujours interprétées comme alpha droite. Par exemple, lorsque vous spécifiez la couleur d’un ID2D1SolidColorBrush à utiliser avec une bitmap qui utilise le mode alpha prémultiplié, vous devez spécifier la couleur comme vous le feriez si l’image bitmap utilisait une image alpha droite. Lorsque vous peignez avec le pinceau, Direct2D traduit la couleur au format de destination pour vous.

Mode Alpha pour les cibles de rendu

Quel que soit le paramètre de mode alpha, le contenu d’une cible de rendu prend en charge la transparence. Par exemple, si vous dessinez un rectangle rouge partiellement transparent avec une cible de rendu avec un mode alpha de D2D1_ALPHA_MODE_IGNORE, le rectangle apparaît en rose (si l’arrière-plan est blanc), comme vous pouvez vous y attendre.

Si vous dessinez un rectangle rouge partiellement transparent lorsque le mode alpha est CreateCompatibleRenderTarget méthode) pour créer une bitmap qui prend en charge la transparence.

Modes ClearType et Alpha

Si vous spécifiez un mode alpha autre que D2D1_ALPHA_MODE_IGNORE pour une cible de rendu, le mode anti-attirail du texte passe automatiquement de D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE à D2D1_TEXT_ANTIALIAS_MODE GRAYSCALE. (Lorsque vous spécifiez un mode alpha de D2D1_ALPHA_MODE_UNKNOWN, Direct2D définit l’alpha pour vous en fonction du type de cible de rendu. Pour obtenir la liste de ce que le paramètre D2D1_ALPHA_MODE_UNKNOWN résout pour chaque cible de rendu, consultez la vue d’ensemble des formats de pixels et des modes alpha pris en charge .)

Vous pouvez utiliser la méthode SetTextAntialiasMode pour remplacer le mode anti-atalias de texte en D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE, mais le rendu du texte ClearType sur une surface transparente peut créer des résultats imprévisibles. Si vous souhaitez restituer du texte ClearType vers une cible de rendu transparente, nous vous recommandons d’utiliser l’une des deux techniques suivantes.

  • Utilisez la méthode PushAxisAlignedClip pour couper la cible de rendu dans la zone où le texte sera rendu, puis appelez la méthode Clear et spécifiez une couleur opaque, puis affichez votre texte.
  • Utilisez DrawRectangle pour dessiner un rectangle opaque derrière la zone où le texte sera affiché.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7, Windows Vista avec SP2 et Mise à jour de plateforme pour Windows Vista [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2008 R2, Windows Server 2008 avec SP2 et Mise à jour de plateforme pour Windows Server 2008 [applications de bureau | Applications UWP]
En-tête dcommon.h (include D2d1.h)

Voir aussi

Formats de pixel et modes alpha pris en charge