ImageAttributes::ClearColorMatrices メソッド (gdiplusimageattributes.h)

ImageAttributes::ClearColorMatrices メソッドは、指定したカテゴリの色調整マトリックスとグレースケール調整マトリックスをクリアします。

構文

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

パラメーター

[in, optional] type

型: ColorAdjustType

調整マトリックスがクリアされるカテゴリを指定する ColorAdjustType 列挙体の要素。 既定値は ColorAdjustTypeDefault です

戻り値

型: 状態

メソッドが成功した場合は、状態列挙体の要素である Ok を返します。

メソッドが失敗した場合は、 Status 列挙体の他の要素のいずれかを返します。

注釈

ImageAttributes オブジェクトは、既定、ビットマップ、ブラシ、ペン、テキストの 5 つの調整カテゴリの色とグレースケールの設定を保持します。 たとえば、既定のカテゴリの調整マトリックスのペア (色とグレースケール)、ビットマップ カテゴリの調整マトリックスの異なるペア、およびペン カテゴリの調整マトリックスの異なるペアを指定できます。

既定の色調整設定とグレースケール調整設定は、独自の調整設定を持たないすべてのカテゴリに適用されます。 たとえば、ペン カテゴリに調整設定を指定しない場合は、既定の設定がペン カテゴリに適用されます。

特定のカテゴリに対してカラー調整またはグレースケール調整設定を指定するとすぐに、既定の調整設定がそのカテゴリに適用されなくなります。 たとえば、調整マトリックスのペア (色とグレースケール) と既定のカテゴリのガンマ値を指定するとします。 ImageAttributes::SetColorMatrices を呼び出してペン カテゴリの調整マトリックスのペアを設定した場合、既定の調整マトリックスはペンには適用されません。 後で ImageAttributes::ClearColorMatrices を呼び出してペン調整マトリックスをクリアした場合、ペン カテゴリは既定の調整マトリックスに戻りません。代わりに、ペン カテゴリには調整マトリックスはありません。 同様に、ペン カテゴリは既定のガンマ値に戻りません。代わりに、ペン カテゴリにはガンマ値はありません。

次の例では、.emf ファイルから Image オブジェクトを作成します。 このコードでは、 ImageAttributes オブジェクトも作成されます。 ImageAttributes::SetColorMatrices の最初の呼び出しは、ImageAttributes オブジェクトの既定の色調整マトリックスと既定のグレースケール調整マトリックスを設定します。 ImageAttributes::SetColorMatrices の 2 番目の呼び出しは、ImageAttributes オブジェクトのペンの色調整マトリックスとペン グレースケール調整マトリックスを設定します。 4 つのマトリックスは次のように実行されます。

  • 既定の色: 赤のコンポーネントに 1.5 を乗算します。
  • 既定のグレースケール: 緑のコンポーネントに 1.5 を乗算します。
  • ペンの色: 青のコンポーネントに 1.5 を乗算します。
  • ペン グレースケール: 赤、緑、青の各コンポーネントに 1.5 を乗算します。

コードは DrawImage を 1 回呼び出して、色調整なしでイメージを描画します。 その後、コードは DrawImage をさらに 3 回呼び出し、Image オブジェクトのアドレスと ImageAttributes オブジェクトのアドレスを渡すたびに呼び出されます。 (既定のマトリックスを設定する呼び出しの後に) イメージを 2 回目に描画すると、すべての色の赤いコンポーネントが 50% 増加し、すべての灰色の緑のコンポーネントが 50% 増加します。 3 回目に画像を描画する (ペン マトリックスを設定する呼び出しの後)、ペンによって描画されるすべての色の青いコンポーネントが 50% 増加し、ペンによって描画されるすべての灰色の赤、緑、青のコンポーネントが 50% 増加します。 4 回目のイメージの描画 ( ImageAttributes::ClearColorMatrices の呼び出し後) は、ペンによって描画される色と灰色に調整は適用されません。


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

次の図は、上記のコードの出力を示しています。

各 4 つの省略記号の 4 行を示す図。ペンで描かれたものは、塗りつぶされたペンよりも色が異なります

要件

   
サポートされている最小のクライアント Windows XP、Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー gdiplusimageattributes.h (Gdiplus.h を含む)
Library Gdiplus.lib
[DLL] Gdiplus.dll

こちらもご覧ください

Bitmap

ColorAdjustType

ColorMatrix

Image

ImageAttributes

ImageAttributes::ClearColorMatrix

ImageAttributes::SetColorMatrices

ImageAttributes::SetColorMatrix

ImageAttributes::SetToIdentity

メタファイル

色変更