ImageAttributes::ClearColorMatrices-Methode (gdiplusimageattributes.h)

Die ImageAttributes::ClearColorMatrices-Methode löscht die Farbanpassungsmatrix und die Graustufenanpassungsmatrix für eine angegebene Kategorie.

Syntax

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

Parameter

[in, optional] type

Typ: ColorAdjustType

Element der ColorAdjustType-Enumeration , das die Kategorie angibt, für die die Anpassungsmatrizen gelöscht werden. Der Standardwert ist ColorAdjustTypeDefault.

Rückgabewert

Typ: Status

Wenn die Methode erfolgreich ist, gibt sie OK zurück, ein Element der Status-Enumeration .

Wenn die Methode fehlschlägt, wird eines der anderen Elemente der Status-Enumeration zurückgegeben.

Hinweise

Ein ImageAttributes-Objekt verwaltet Farb- und Graustufeneinstellungen für fünf Anpassungskategorien: Standard, Bitmap, Pinsel, Stift und Text. Sie können beispielsweise ein Paar (Farbe und Graustufen) von Anpassungsmatrizen für die Standardkategorie, ein anderes Paar von Anpassungsmatrizen für die Bitmapkategorie und noch ein anderes Paar von Anpassungsmatrizen für die Stiftkategorie angeben.

Die Standardeinstellungen für Farb- und Graustufenanpassung gelten für alle Kategorien, die keine eigenen Anpassungseinstellungen haben. Wenn Sie beispielsweise nie Anpassungseinstellungen für die Stiftkategorie angeben, gelten die Standardeinstellungen für die Stiftkategorie.

Sobald Sie eine Farb- oder Graustufenanpassungseinstellung für eine bestimmte Kategorie angeben, gelten die Standardeinstellungseinstellungen nicht mehr für diese Kategorie. Angenommen, Sie geben ein Paar (Farbe und Graustufen) von Anpassungsmatrizen und einen Gammawert für die Standardkategorie an. Wenn Sie ein Paar von Anpassungsmatrizen für die Stiftkategorie festlegen, indem Sie ImageAttributes::SetColorMatrices aufrufen, gelten die Standardanpassungsmatrizen nicht für Stifte. Wenn Sie die Stiftanpassungsmatrizen später durch Aufrufen von ImageAttributes::ClearColorMatrices löschen, rückgängig machen die Stiftkategorie nicht zu den Standardanpassungsmatrizen, sondern die Stiftkategorie enthält keine Anpassungsmatrizen. Ebenso rückgängig machen die Stiftkategorie nicht auf den Standard-Gammawert. Stattdessen weist die Stiftkategorie keinen Gammawert auf.

Beispiele

Im folgenden Beispiel wird ein Image-Objekt aus einer EMF-Datei erstellt. Der Code erstellt auch ein ImageAttributes-Objekt . Der erste Aufruf von ImageAttributes::SetColorMatrices legt die Standardfarbanpassungsmatrix und die Standard-Graustufenanpassungsmatrix des ImageAttributes-Objekts fest. Der zweite Aufruf von ImageAttributes::SetColorMatrices legt die Farbanpassungsmatrix des Stifts und die Stift-Graustufenanpassungsmatrix des ImageAttributes-Objekts fest. Die vier Matrizen funktionieren wie folgt:

  • Standardfarbe: Multipliziert die rote Komponente mit 1,5.
  • Standardgraustufen: Multipliziert die grüne Komponente mit 1,5.
  • Stiftfarbe: Multipliziert die blaue Komponente mit 1,5.
  • Graustufen des Stifts: Multipliziert rote, grüne und blaue Komponenten mit 1,5.

Der Code ruft DrawImage einmal auf, um das Bild ohne Farbanpassung zu zeichnen. Anschließend ruft der Code DrawImage drei weitere Male auf, wobei jedes Mal die Adresse des Image-Objekts und die Adresse des ImageAttributes-Objekts übergeben werden. Wenn das Bild zum zweiten Mal gezeichnet wird (nach dem Aufruf, der die Standardmatrizen festlegt), haben alle Farben ihre roten Komponenten um 50 Prozent erhöht, und alle Grautöne haben ihre grünen Komponenten um 50 Prozent erhöht. Wenn das Bild zum dritten Mal gezeichnet wird (nach dem Aufruf, der die Stiftmatrizen festlegt), haben alle von einem Stift gezeichneten Farben ihre blauen Komponenten um 50 Prozent erhöht, und alle mit einem Stift gezeichneten Grautöne haben ihre roten, grünen und blauen Komponenten um 50 Prozent erhöht. Beim vierten Mal, wenn das Bild gezeichnet wird (nach dem Aufruf von ImageAttributes::ClearColorMatrices), werden keine Anpassungen auf Farben und Grautöne angewendet, die von einem Stift gezeichnet werden.


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

Die folgende Abbildung zeigt die Ausgabe des vorangehenden Codes.

Abbildung mit vier Zeilen mit jeweils vier Auslassungspunkten; die mit einem Stift gezeichneten Unterschiedliche Farbe stärker als die gefüllten

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP, Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile gdiplusimageattributes.h (include Gdiplus.h)
Bibliothek Gdiplus.lib
DLL Gdiplus.dll

Weitere Informationen

Bitmap

Farbe

Coloradjusttype

Colormatrix

Bild

ImageAttributes

ImageAttributes::ClearColorMatrix

ImageAttributes::SetColorMatrices

ImageAttributes::SetColorMatrix

ImageAttributes::SetToIdentity

Metafile

Neueinfärbung