Metodo ImageAttributes::ClearColorMatrices (gdiplusimageattributes.h)

Il metodo ImageAttributes::ClearColorMatrices cancella la matrice di regolazione dei colori e la matrice di regolazione della scala grigia per una categoria specificata.

Sintassi

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

Parametri

[in, optional] type

Tipo: ColorAdjustType

Elemento dell'enumerazione ColorAdjustType che specifica la categoria per cui vengono cancellate le matrici di regolazione. Il valore predefinito è ColorAdjustTypeDefault.

Valore restituito

Tipo: Stato

Se il metodo ha esito positivo, restituisce Ok, ovvero un elemento dell'enumerazione Status .

Se il metodo ha esito negativo, restituisce uno degli altri elementi dell'enumerazione Status .

Commenti

Un oggetto ImageAttributes gestisce le impostazioni di colore e scala di grigio per cinque categorie di regolazione: impostazione predefinita, bitmap, pennello, penna e testo. Ad esempio, è possibile specificare una coppia (colore e scala di grigio) di matrici di regolazione per la categoria predefinita, una coppia diversa di matrici di regolazione per la categoria bitmap e ancora una coppia diversa di matrici di regolazione per la categoria di penna.

Le impostazioni predefinite di regolazione del colore e della scala grigia si applicano a tutte le categorie che non hanno impostazioni di regolazione personalizzate. Ad esempio, se non si specificano mai impostazioni di regolazione per la categoria di penna, le impostazioni predefinite si applicano alla categoria di penna.

Non appena si specifica un'impostazione di regolazione del colore o della scala grigia per una determinata categoria, le impostazioni di regolazione predefinite non si applicano più a tale categoria. Si supponga, ad esempio, di specificare una coppia (colore e scala di grigio) di matrici di regolazione e un valore gamma per la categoria predefinita. Se si imposta una coppia di matrici di regolazione per la categoria di penna chiamando ImageAttributes::SetColorMatrices, le matrici di regolazione predefinite non verranno applicate alle penne. Se in seguito si cancellano le matrici di regolazione della penna chiamando ImageAttributes::ClearColorMatrices, la categoria di penna non verrà ripristinata nelle matrici di regolazione predefinite; invece, la categoria di penna non avrà matrici di regolazione. Analogamente, la categoria di penna non verrà ripristinata al valore gamma predefinito; invece, la categoria di penna non avrà alcun valore gamma.

Esempio

Nell'esempio seguente viene creato un oggetto Image da un file con estensione emf. Il codice crea anche un oggetto ImageAttributes . La prima chiamata a ImageAttributes::SetColorMatrices imposta la matrice di regolazione dei colori predefinita e la matrice di regolazione della scala di grigio predefinita dell'oggetto ImageAttributes . La seconda chiamata a ImageAttributes::SetColorMatrices imposta la matrice di regolazione del colore della penna e la matrice di regolazione della scala grigia penna dell'oggetto ImageAttributes . Le quattro matrici vengono eseguite come segue:

  • Colore predefinito: moltiplica il componente rosso per 1,5.
  • Scala di grigio predefinita: moltiplica il componente verde per 1,5.
  • Colore penna: moltiplica il componente blu per 1,5.
  • Scala grigia penna: moltiplica i componenti rossi, verdi e blu per 1,5.

Il codice chiama DrawImage una volta per disegnare l'immagine senza regolazione dei colori. Il codice chiama quindi DrawImage tre volte più volte, ogni volta che passa l'indirizzo dell'oggetto Image e l'indirizzo dell'oggetto ImageAttributes. La seconda volta che l'immagine viene disegnata (dopo la chiamata che imposta le matrici predefinite), tutti i colori hanno i loro componenti rossi aumentato del 50% e tutti i grigi hanno i loro componenti verdi incrementati del 50%. La terza volta che l'immagine viene disegnata (dopo la chiamata che imposta le matrici di penna), tutti i colori disegnati da una penna hanno un aumento del 50% dei componenti blu e tutti i grigi disegnati da una penna hanno i loro componenti rossi, verdi e blu aumentano del 50%. La quarta volta che l'immagine viene disegnata (dopo la chiamata a ImageAttributes::ClearColorMatrices), non vengono applicate modifiche ai colori e ai grigi disegnate da una penna.


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); 
}
				

La figura seguente mostra l'output del codice precedente.

Figura che mostra quattro righe di quattro puntini di sospensione ciascuno; quelli disegnati con una penna variano in colore più di quelli riempiti

Requisiti

   
Client minimo supportato Windows XP, Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione gdiplusimageattributes.h (include Gdiplus.h)
Libreria Gdiplus.lib
DLL Gdiplus.dll

Vedi anche

Bitmap

Color

Coloradjusttype

Colormatrix

Immagine

Imageattributes

ImageAttributes::ClearColorMatrix

ImageAttributes::SetColorMatrices

ImageAttributes::SetColorMatrix

ImageAttributes::SetToIdentity

Metafile

Ricolorazione