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.
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
ImageAttributes::ClearColorMatrix
ImageAttributes::SetColorMatrices
ImageAttributes::SetColorMatrix