Condividi tramite


Metodo ImageAttributes::ClearColorKey (gdiplusimageattributes.h)

Il metodo ImageAttributes::ClearColorKey cancella la chiave di colore (intervallo di trasparenza) per una categoria specificata.

Sintassi

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

Parametri

[in, optional] type

Tipo: ColorAdjustType

Elemento dell'enumerazione ColorAdjustType che specifica la categoria per cui viene cancellata la chiave di colore. Il valore predefinito è ColorAdjustTypeDefault.

Valore restituito

Tipo: Stato

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

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

Commenti

Un oggetto ImageAttributes mantiene le impostazioni di colore e gradazioni di grigio per cinque categorie di regolazione: default, bitmap, brush, pen e text. Ad esempio, è possibile specificare una chiave di colore per la categoria predefinita, una chiave di colore diversa per la categoria bitmap e ancora una chiave di colore diversa per la categoria della penna.

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

Non appena si specifica un'impostazione di regolazione del colore o della scala di grigi per una determinata categoria, le impostazioni di regolazione predefinite non si applicano più a tale categoria. Si supponga, ad esempio, di specificare una chiave di colore predefinita che rende qualsiasi colore con un componente rosso compreso tra 200 e 255 trasparente e si specifica un valore gamma predefinito pari a 1,8. Se si imposta la chiave di colore della categoria della penna chiamando ImageAttributes::SetColorKey, la chiave di colore predefinita e il valore gamma predefinito non verranno applicati alle penne. Se in seguito si cancella il tasto colore della penna chiamando ImageAttributes::ClearColorKey, la categoria della penna non verrà ripristinata alla chiave di colore predefinita; invece, la categoria della penna non avrà alcun tasto colore. Analogamente, la categoria della penna non ripristina il valore gamma predefinito; invece, la categoria della 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::SetColorKey imposta la chiave di colore predefinita dell'oggetto ImageAttributes in modo che i colori con un componente rosso compreso tra 80 e 120 siano trasparenti. La seconda chiamata a ImageAttributes::SetColorKey imposta la chiave di colore della penna dell'oggetto ImageAttributes in modo che tutti i colori con un componente rosso compreso tra 135 e 175 siano trasparenti.

Il codice chiama DrawImage una volta per disegnare l'immagine senza alcuna regolazione del colore. Il codice chiama quindi DrawImage tre volte più, 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 la chiave di colore predefinita), tutto il rosso compreso tra 80 e 120 è trasparente. La terza volta che l'immagine viene disegnata (dopo la chiamata che imposta la chiave del colore della penna), tutto il rosso da 135 a 175 disegnato con una penna è trasparente. Inoltre, tutto il rosso da 80 a 120 che non viene disegnato con una penna è trasparente. La quarta volta che l'immagine viene disegnata (dopo la chiamata a ImageAttributes::ClearColorKey), nessuna delle immagini disegnate in rosso con una penna è trasparente. Inoltre, tutto il rosso da 80 a 120 che non viene disegnato con una penna è trasparente.


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

   Image image(L"TestMetafile5.emf");
   ImageAttributes imAtt;

   // Draw the image (metafile) using no color adjustment.
   graphics.DrawImage(
      &image,
      Rect(0, 0, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),        // source rect
      UnitPixel);

   // Set the default color key.
   imAtt.SetColorKey(
      Color(0, 80, 0, 0),
      Color(255, 120, 255, 255),
      ColorAdjustTypeDefault);

   // Draw the image (metafile) using default color adjustment.
   // Colors with red components from 80 through 120 are transparent.
   graphics.DrawImage(
      &image,
      Rect(0, 100, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),          // source rect
      UnitPixel,
      &imAtt);

   // Set the pen color key.
   imAtt.SetColorKey(
      Color(0, 135, 0, 0),
      Color(255, 175, 255, 255),
      ColorAdjustTypePen);

   // Draw the image (metafile) using default and pen adjustment.
   // Colors drawn with a pen that have red components from 135 through 175
   // are transparent. Colors not drawn with a pen that have red components
   // from 80 to 120 are transparent.
   graphics.DrawImage(
      &image,
      Rect(0, 200, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),          // source rect
      UnitPixel,
      &imAtt);

   // Clear the pen color key.
   imAtt.ClearColorKey(ColorAdjustTypePen);

   // Draw the image (metafile) using only default color adjustment.
   // No colors drawn with a pen are transparent. Colors not drawn with 
   // a pen that have red components from 80 to 120 are transparent.
   graphics.DrawImage(
      &image,
      Rect(0, 300, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),          // source rect
      UnitPixel,
      &imAtt); 
}
				

Il codice precedente, insieme a un particolare file, TestMetafile5.png, ha prodotto l'output seguente. Le barre nella colonna sinistra sono state disegnate con una penna e le barre nella colonna destra sono state riempite con un pennello. La chiave di colore predefinita si applica alle barre riempite con un pennello. La chiave di colore applicabile alle barre disegnate con una penna varia in base alle chiamate ImageAttributes::SetColorKey e ImageAttributes::ClearColorKey .

Figura che mostra le barre in quattro righe di due colonne ognuna; le ultime due hanno numeri diversi di barre in ogni riga

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

Immagine

Imageattributes

ImageAttributes::ClearThreshold

ImageAttributes::SetColorKey

ImageAttributes::SetThreshold

Metafile

Ricolorazione