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

ImageAttributes::ClearColorKey メソッドは、指定したカテゴリの色キー (透明度の範囲) をクリアします。

構文

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

パラメーター

[in, optional] type

型: ColorAdjustType

色キーがクリアされるカテゴリを指定する ColorAdjustType 列挙体の要素。 既定値は ColorAdjustTypeDefault です

戻り値

型: 状態

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

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

注釈

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

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

特定のカテゴリに対してカラー調整またはグレースケール調整設定を指定するとすぐに、既定の調整設定がそのカテゴリに適用されなくなります。 たとえば、200 から 255 までの赤いコンポーネントを持つ任意の色を透明にする既定のカラー キーを指定し、既定のガンマ値として 1.8 を指定するとします。 ImageAttributes::SetColorKey を呼び出してペン カテゴリのカラー キーを設定した場合、既定のカラー キーと既定のガンマ値はペンには適用されません。 後で ImageAttributes::ClearColorKey を呼び出してペンの色キーをクリアした場合、ペン カテゴリは既定の色キーに戻りません。代わりに、ペン カテゴリには色キーはありません。 同様に、ペン カテゴリは既定のガンマ値に戻りません。代わりに、ペン カテゴリにはガンマ値はありません。

次の例では、.emf ファイルから Image オブジェクトを作成します。 このコードでは、 ImageAttributes オブジェクトも作成されます。 ImageAttributes::SetColorKey を最初に呼び出すと、ImageAttributes オブジェクトの既定のカラー キーが設定され、赤いコンポーネントが 80 から 120 の色が透明になります。 ImageAttributes::SetColorKey の 2 番目の呼び出しでは、ImageAttributes オブジェクトのペン カラー キーが設定され、赤いコンポーネントが 135 から 175 のすべての色が透明になります。

コードは DrawImage を 1 回呼び出して、色調整なしでイメージを描画します。 その後、コードは DrawImage をさらに 3 回呼び出し、Image オブジェクトのアドレスと ImageAttributes オブジェクトのアドレスを渡すたびに呼び出されます。 イメージが 2 回目に描画されるとき (既定のカラー キーを設定する呼び出しの後)、80 から 120 までの赤のすべてが透明になります。 3 回目に画像が描画されるとき (ペンの色キーを設定する呼び出しの後)、ペンで描画される 135 から 175 までの赤のすべてが透明になります。 また、ペンで描画されていない 80 から 120 までの赤のすべてが透明です。 4 回目のイメージの描画 ( ImageAttributes::ClearColorKey の呼び出しの後) は、ペンで描画された赤のいずれも透明でありません。 また、ペンで描画されていない 80 から 120 までの赤のすべてが透明です。


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

   Image image(L"TestMetafile5.emf");
   ImageAttributes imAtt;

   // Draw the image (metafile) using no color adjustment.
   graphics.DrawImage(
      &image,
      Rect(0, 0, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),        // source rect
      UnitPixel);

   // Set the default color key.
   imAtt.SetColorKey(
      Color(0, 80, 0, 0),
      Color(255, 120, 255, 255),
      ColorAdjustTypeDefault);

   // Draw the image (metafile) using default color adjustment.
   // Colors with red components from 80 through 120 are transparent.
   graphics.DrawImage(
      &image,
      Rect(0, 100, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),          // source rect
      UnitPixel,
      &imAtt);

   // Set the pen color key.
   imAtt.SetColorKey(
      Color(0, 135, 0, 0),
      Color(255, 175, 255, 255),
      ColorAdjustTypePen);

   // Draw the image (metafile) using default and pen adjustment.
   // Colors drawn with a pen that have red components from 135 through 175
   // are transparent. Colors not drawn with a pen that have red components
   // from 80 to 120 are transparent.
   graphics.DrawImage(
      &image,
      Rect(0, 200, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),          // source rect
      UnitPixel,
      &imAtt);

   // Clear the pen color key.
   imAtt.ClearColorKey(ColorAdjustTypePen);

   // Draw the image (metafile) using only default color adjustment.
   // No colors drawn with a pen are transparent. Colors not drawn with 
   // a pen that have red components from 80 to 120 are transparent.
   graphics.DrawImage(
      &image,
      Rect(0, 300, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),          // source rect
      UnitPixel,
      &imAtt); 
}
				

上記のコードは、特定のファイルと共にTestMetafile5.png、次の出力を生成しました。 左側の列のバーはペンで描画され、右側の列のバーにはブラシが塗りつぶされていました。 既定のカラー キーは、ブラシで塗りつぶされたバーに適用されます。 ペンで描画されるバーに適用される色キーは、 ImageAttributes::SetColorKeyImageAttributes::ClearColorKey 呼び出しによって異なります。

2 列ずつ 4 行のバーを示す図。最後の 2 つは、各行のバーの数が等しくありません

要件

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

こちらもご覧ください

Bitmap

ColorAdjustType

Image

ImageAttributes

ImageAttributes::ClearThreshold

ImageAttributes::SetColorKey

ImageAttributes::SetThreshold

メタファイル

色変更