Condividi tramite


Metodo ImageAttributes::SetOutputChannel (gdiplusimageattributes.h)

Il metodo ImageAttributes::SetOutputChannel imposta il canale di output CMYK per una categoria specificata.

Sintassi

Status SetOutputChannel(
  [in]           ColorChannelFlags channelFlags,
  [in, optional] ColorAdjustType   type
);

Parametri

[in] channelFlags

Tipo: ColorChannelFlags

Elemento dell'enumerazione ColorChannelFlags che specifica il canale di output.

[in, optional] type

Tipo: ColorAdjustType

Elemento dell'enumerazione ColorAdjustType che specifica la categoria per cui è impostato il canale di output. 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

È possibile utilizzare il metodo ImageAttributes::SetOutputChannel per convertire un'immagine in uno spazio colori ciano-magenta-giallo-nero (CMYK) ed esaminare le intensità di uno dei canali di colore CMYK. Si supponga, ad esempio, di creare un oggetto ImageAttributes e di impostarne il canale di output bitmap su ColorChannelFlagsC. Se passi l'indirizzo dell'oggetto ImageAttributes al metodo DrawImage , viene calcolato il componente ciano di ogni pixel e ogni pixel nell'immagine sottoposta a rendering è una sfumatura di grigio che indica l'intensità del canale ciano. Analogamente, è possibile eseguire il rendering di immagini che indicano le intensità dei canali magenta, giallo e nero.

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 un canale di output per la categoria predefinita e un canale di output diverso per la categoria bitmap.

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 bitmap, le impostazioni predefinite si applicano alla categoria bitmap.

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 raccolta di impostazioni di regolazione per la categoria predefinita. Se si imposta il canale di output per la categoria bitmap passando ColorAdjustTypeBitmap al metodo ImageAttributes::SetOutputChannel , nessuna delle impostazioni di regolazione predefinite verrà applicata alle bitmap.

Esempio

Nell'esempio seguente viene creato un oggetto Image e viene chiamato il metodo DrawImage per disegnare l'immagine. Il codice crea quindi un oggetto ImageAttributes e imposta il canale di output bitmap su ciano (ColorChannelFlagsC). Il codice chiama DrawImage una seconda volta, passando l'indirizzo dell'oggetto Image e l'indirizzo dell'oggetto ImageAttributes . Il canale ciano di ogni pixel viene calcolato e l'immagine sottoposta a rendering mostra le intensità del canale ciano come sfumature di grigio. Il codice chiama DrawImage tre volte più volte per mostrare le intensità dei canali magenta, giallo e nero.


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

   Image image(L"Mosaic2.bmp");

   // Draw the image unaltered.
   graphics.DrawImage(&image, 10, 10, width, height);

   UINT width = image.GetWidth();
   UINT height = image.GetHeight();

   ImageAttributes imAtt;

   // Draw the image, showing the intensity of the cyan channel.
   imAtt.SetOutputChannel(ColorChannelFlagsC, ColorAdjustTypeBitmap);
   graphics.DrawImage(
      &image,
      Rect(110, 10, width, height),  // dest rect
      0, 0, width, height,           // source rect
      UnitPixel,
      &imAtt);

   // Draw the image, showing the intensity of the magenta channel.
   imAtt.SetOutputChannel(ColorChannelFlagsM, ColorAdjustTypeBitmap);
   graphics.DrawImage(
      &image,
      Rect(210, 10, width, height),  // dest rect
      0, 0, width, height,           // source rect
      UnitPixel,
      &imAtt);

   // Draw the image, showing the intensity of the yellow channel.
   imAtt.SetOutputChannel(ColorChannelFlagsY, ColorAdjustTypeBitmap);
   graphics.DrawImage(
      &image,
      Rect(10, 110, width, height),  // dest rect
      0, 0, width, height,           // source rect
      UnitPixel,
      &imAtt);

   // Draw the image, showing the intensity of the black channel.
   imAtt.SetOutputChannel(ColorChannelFlagsK, ColorAdjustTypeBitmap);
   graphics.DrawImage(
      &image,
      Rect(110, 110, width, height),  // dest rect
      0, 0, width, height,            // source rect
      UnitPixel,
      &imAtt); 
}
				

La figura seguente mostra l'output del codice precedente.

Illustrazione che mostra cinque versioni di un'immagine: prima a colori, poi in quattro modelli diversi di scala grigia

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

Coloradjusttype

ColorChannelFlags

Imageattributes

ImageAttributes::ClearOutputChannel

ImageAttributes::ClearOutputChannelColorProfile

ImageAttributes::SetOutputChannelColorProfile