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);
}
次の図は、前のコードの出力を示しています。
要件
サポートされている最小のクライアント | Windows XP、Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | gdiplusimageattributes.h (Gdiplus.h を含む) |
Library | Gdiplus.lib |
[DLL] | Gdiplus.dll |
関連項目
ImageAttributes::ClearColorMatrix
ImageAttributes::SetColorMatrices
ImageAttributes::SetColorMatrix