Méthode ImageAttributes::ClearColorMatrices (gdiplusimageattributes.h)

La méthode ImageAttributes::ClearColorMatrices efface la matrice d’ajustement des couleurs et la matrice d’ajustement des nuances de gris pour une catégorie spécifiée.

Syntaxe

Status ClearColorMatrices(
  [in, optional] ColorAdjustType type
);

Paramètres

[in, optional] type

Type : ColorAdjustType

Élément de l’énumération ColorAdjustType qui spécifie la catégorie pour laquelle les matrices d’ajustement sont effacées. La valeur par défaut est ColorAdjustTypeDefault.

Valeur retournée

Type : État

Si la méthode réussit, elle retourne Ok, qui est un élément de l’énumération Status .

Si la méthode échoue, elle retourne l’un des autres éléments de l’énumération Status .

Notes

Un objet ImageAttributes conserve les paramètres de couleur et de nuances de gris pour cinq catégories d’ajustement : par défaut, bitmap, pinceau, stylet et texte. Par exemple, vous pouvez spécifier une paire (couleur et nuances de gris) de matrices d’ajustement pour la catégorie par défaut, une paire différente de matrices d’ajustement pour la catégorie bitmap et une paire différente de matrices d’ajustement pour la catégorie de stylet.

Les paramètres de réglage des couleurs et des nuances de gris par défaut s’appliquent à toutes les catégories qui n’ont pas leurs propres paramètres d’ajustement. Par exemple, si vous ne spécifiez jamais de paramètres d’ajustement pour la catégorie de stylet, les paramètres par défaut s’appliquent à la catégorie de stylet.

Dès que vous spécifiez un paramètre de réglage des couleurs ou des nuances de gris pour une certaine catégorie, les paramètres d’ajustement par défaut ne s’appliquent plus à cette catégorie. Par exemple, supposons que vous spécifiez une paire (couleur et nuances de gris) de matrices d’ajustement et une valeur gamma pour la catégorie par défaut. Si vous définissez une paire de matrices d’ajustement pour la catégorie de stylet en appelant ImageAttributes::SetColorMatrices, les matrices d’ajustement par défaut ne s’appliquent pas aux stylets. Si vous effacez ultérieurement les matrices d’ajustement du stylet en appelant ImageAttributes::ClearColorMatrices, la catégorie de stylet ne revient pas aux matrices d’ajustement par défaut ; au lieu de cela, la catégorie de stylet n’aura pas de matrices d’ajustement. De même, la catégorie de stylet ne rétablit pas la valeur gamma par défaut ; au lieu de cela, la catégorie de stylet n’aura pas de valeur gamma.

Exemples

L’exemple suivant crée un objet Image à partir d’un fichier .emf. Le code crée également un objet ImageAttributes . Le premier appel à ImageAttributes::SetColorMatrices définit la matrice d’ajustement des couleurs par défaut et la matrice d’ajustement des nuances de gris par défaut de l’objet ImageAttributes . Le deuxième appel à ImageAttributes::SetColorMatrices définit la matrice d’ajustement des couleurs du stylet et la matrice d’ajustement des nuances de gris de l’objet ImageAttributes . Les quatre matrices fonctionnent comme suit :

  • Couleur par défaut : multiplie le composant rouge par 1,5.
  • Nuances de gris par défaut : multiplie le composant vert par 1,5.
  • Couleur du stylet : multiplie le composant bleu par 1,5.
  • Nuances de gris du stylet : multiplie les composants rouge, vert et bleu par 1,5.

Le code appelle DrawImage une fois pour dessiner l’image sans réglage des couleurs. Ensuite, le code appelle DrawImage trois fois de plus, chaque fois en passant l’adresse de l’objet Image et l’adresse de l’objet ImageAttributes . La deuxième fois que l’image est dessinée (après l’appel qui définit les matrices par défaut), toutes les couleurs ont leurs composants rouges augmentés de 50 %, et tous les gris ont leurs composants verts augmentés de 50 %. La troisième fois que l’image est dessinée (après l’appel qui définit les matrices de stylet), toutes les couleurs dessinées par un stylet ont leurs composants bleus augmentés de 50 pour cent, et tous les gris dessinés par un stylet ont leurs composants rouge, vert et bleu augmenté de 50 pour cent. La quatrième fois que l’image est dessinée (après l’appel à ImageAttributes::ClearColorMatrices), aucun ajustement n’est appliqué aux couleurs et aux gris dessinés par un stylet.


VOID Example_SetClearColorMatrices(HDC hdc)
{
   Graphics graphics(hdc);

   Image            image(L"TestMetafile6.emf");
   ImageAttributes  imAtt;
   RectF            rect;
   Unit             unit;

   image.GetBounds(&rect, &unit);

   ColorMatrix defaultColorMatrix = {  // Multiply red component by 1.5.
      1.5f,  0.0f,  0.0f,  0.0f,  0.0f,
      0.0f,  1.0f,  0.0f,  0.0f,  0.0f,
      0.0f,  0.0f,  1.0f,  0.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  1.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  0.0f,  1.0f};

   ColorMatrix defaultGrayMatrix = {  // Multiply green component by 1.5.
      1.0f,  0.0f,  0.0f,  0.0f,  0.0f,
      0.0f,  1.5f,  0.0f,  0.0f,  0.0f,
      0.0f,  0.0f,  1.0f,  0.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  1.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  0.0f,  1.0f};

   ColorMatrix penColorMatrix = {     // Multiply blue component by 1.5.
      1.0f,  0.0f,  0.0f,  0.0f,  0.0f,
      0.0f,  1.0f,  0.0f,  0.0f,  0.0f,
      0.0f,  0.0f,  1.5f,  0.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  1.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  0.0f,  1.0f};

   ColorMatrix penGrayMatrix = {      // Multiply all components by 1.5.
      1.5f,  0.0f,  0.0f,  0.0f,  0.0f,
      0.0f,  1.5f,  0.0f,  0.0f,  0.0f,
      0.0f,  0.0f,  1.5f,  0.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  1.0f,  0.0f,
      0.0f,  0.0f,  0.0f,  0.0f,  1.0f};

   // Set the default color- and grayscale-adjustment matrices.
   imAtt.SetColorMatrices(
      &defaultColorMatrix,
      &defaultGrayMatrix, 
      ColorMatrixFlagsAltGray,
      ColorAdjustTypeDefault); 

   graphics.DrawImage(&image, 10.0f, 10.0f, rect.Width, rect.Height);

   graphics.DrawImage(
      &image, 
      RectF(10.0f, 50.0f, rect.Width, rect.Height),  // destination rectangle 
      rect.X, rect.Y,                // upper-left corner of source rectangle 
      rect.Width,                    // width of source rectangle
      rect.Height,                   // height of source rectangle
      UnitPixel,
      &imAtt);

   // Set the pen color- and grayscale-adjustment matrices.
   imAtt.SetColorMatrices(
      &penColorMatrix,
      &penGrayMatrix, 
      ColorMatrixFlagsAltGray,
      ColorAdjustTypePen); 

   graphics.DrawImage(
      &image, 
      RectF(10.0f, 90.0f, rect.Width, rect.Height),  // destination rectangle 
      rect.X, rect.Y,                // upper-left corner of source rectangle 
      rect.Width,                    // width of source rectangle
      rect.Height,                   // height of source rectangle
      UnitPixel,
      &imAtt);

   imAtt.ClearColorMatrices(ColorAdjustTypePen);

   graphics.DrawImage(
      &image, 
      RectF(10.0f, 130.0f, rect.Width, rect.Height),  // destination rectangle 
      rect.X, rect.Y,                // upper-left corner of source rectangle 
      rect.Width,                    // width of source rectangle
      rect.Height,                   // height of source rectangle
      UnitPixel,
      &imAtt); 
}
				

L’illustration suivante montre la sortie du code précédent.

Illustration montrant quatre lignes de quatre ellipses chacune ; celles dessinées avec un stylet varient en couleur plus que celles remplies

Spécifications

   
Client minimal pris en charge Windows XP, Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête gdiplusimageattributes.h (incluez Gdiplus.h)
Bibliothèque Gdiplus.lib
DLL Gdiplus.dll

Voir aussi

Bitmap

Color

ColorAdjustType

Colormatrix

Image

ImageAttributes

ImageAttributes::ClearColorMatrix

ImageAttributes::SetColorMatrices

ImageAttributes::SetColorMatrix

ImageAttributes::SetToIdentity

Metafile

Recolorisation