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::SetColorKey と ImageAttributes::ClearColorKey 呼び出しによって異なります。
要件
サポートされている最小のクライアント | Windows XP、Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | gdiplusimageattributes.h (Gdiplus.h を含む) |
Library | Gdiplus.lib |
[DLL] | Gdiplus.dll |