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

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

構文

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

パラメーター

[in, optional] type

種類: ColorAdjustType

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

戻り値

種類: 状態

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

Color

ColorAdjustType

イメージ

ImageAttributes

ImageAttributes::ClearThreshold

ImageAttributes::SetColorKey

ImageAttributes::SetThreshold

メタファイル

色変更