次の方法で共有


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

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

構文

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

パラメーター

[in, optional] type

種類: ColorAdjustType

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

戻り値

種類: 状態

メソッドが成功した場合は、Status 列挙の要素である 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 回呼び出して、色調整なしでイメージを描画します。 次に、コードは、Image オブジェクトのアドレスと ImageAttributes オブジェクトのアドレスを渡すたびに、DrawImage をさらに 3 回呼び出します。 イメージが 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

Color

ColorAdjustType

ColorMatrix

イメージ

ImageAttributes

ImageAttributes::ClearColorMatrix

ImageAttributes::SetColorMatrices

ImageAttributes::SetColorMatrix

ImageAttributes::SetToIdentity

メタファイル

色変更