ImageAttributes::ClearBrushRemapTable メソッド (gdiplusimageattributes.h)
ImageAttributes::ClearBrushRemapTable メソッドは、この ImageAttributes オブジェクトのブラシカラー再マップ テーブルをクリアします。
構文
Status ClearBrushRemapTable();
戻り値
種類: 状態
メソッドが成功した場合は、Status 列挙体の要素である Ok を返します。
メソッドが失敗した場合は、 Status 列挙体の他の要素のいずれかを返します。
解説
ImageAttributes オブジェクトは、既定、ビットマップ、ブラシ、ペン、テキストの 5 つの調整カテゴリの色とグレースケールの設定を維持します。 たとえば、既定のカテゴリに 1 つのカラー 再マップ テーブル、ビットマップ カテゴリに別のカラー 再マップ テーブル、ブラシ カテゴリに別のカラー 再マップ テーブルを指定できます。
既定の色とグレースケールの調整設定は、独自の調整設定を持たないすべてのカテゴリに適用されます。 たとえば、ブラシ カテゴリの調整設定を指定しない場合、既定の設定はブラシ カテゴリに適用されます。
特定のカテゴリに対してカラーまたはグレースケールの調整設定を指定するとすぐに、既定の調整設定はそのカテゴリに適用されなくなります。 たとえば、赤を緑に変換する既定の再マップ テーブルを指定し、既定のガンマ値 1.8 を指定するとします。 ImageAttributes::SetBrushRemapTable を呼び出した場合、既定の再マップ テーブル (赤から緑) と既定のガンマ値 (1.8) はブラシには適用されません。 後で ImageAttributes::ClearBrushRemapTable を呼び出した場合、ブラシ カテゴリは既定の再マップ テーブルに戻りません。むしろ、ブラシカテゴリには再マップテーブルはありません。 同様に、ブラシ カテゴリは既定のガンマ値に戻りません。むしろ、ブラシカテゴリにはガンマ値はありません。
例
次の例では、.emf ファイルから Image オブジェクトを作成します。 このコードでは、 ImageAttributes オブジェクトも作成されます。 ImageAttributes::SetRemapTable を呼び出すと、ImageAttributes オブジェクトの既定のカラー マップ テーブルが、赤から青に変換されるテーブルに設定されます。 ImageAttributes::SetBrushRemapTable を呼び出すと、ImageAttributes オブジェクトのブラシ再マップ テーブルが、赤から緑に変換されるテーブルに設定されます。
このコードでは 、DrawImage を 1 回呼び出して、色調整なしでイメージを描画します。 次に、コードは、Image オブジェクトのアドレスと ImageAttributes オブジェクトのアドレスを渡すたびに、DrawImage をさらに 3 回呼び出します。 イメージが 2 回目に描画されると ( ImageAttributes::SetRemapTable の呼び出しの後)、すべての赤が青に変換されます。 イメージが 3 回目に描画されると ( ImageAttributes::SetBrushRemapTable の呼び出しの後)、ブラシで塗りつぶされたすべての赤が緑色に変換され、赤の残りの部分が青に変換されます。 4 回目のイメージの描画 ( ImageAttributes::ClearBrushRemapTable の呼び出しの後)、ブラシで塗りつぶされたすべての赤は変更されず、赤の残りの部分は青に変換されます。
VOID Example_SetClearBrushRemap(HDC hdc)
{
Graphics graphics(hdc);
Image image(L"TestMetafile4.emf");
ImageAttributes imAtt;
ColorMap defaultMap;
defaultMap.oldColor = Color(255, 255, 0, 0); // red converted to blue
defaultMap.newColor = Color(255, 0, 0, 255);
ColorMap brushMap;
brushMap.oldColor = Color(255, 255, 0, 0); // red converted to green
brushMap.newColor = Color(255, 0, 255, 0);
// Set the default color-remap table.
imAtt.SetRemapTable(1, &defaultMap, ColorAdjustTypeDefault);
// Draw the image (metafile) using no color adjustment.
graphics.DrawImage(
&image,
Rect(10, 10, image.GetWidth(), image.GetHeight()), // dest rect
0, 0, image.GetWidth(), image.GetHeight(), // source rect
UnitPixel);
// Draw the image (metafile) using default color adjustment.
// All red is converted to blue.
graphics.DrawImage(
&image,
Rect(10, 90, image.GetWidth(), image.GetHeight()), // dest rect
0, 0, image.GetWidth(), image.GetHeight(), // source rect
UnitPixel,
&imAtt);
// Set the brush remap table.
imAtt.SetBrushRemapTable(1, &brushMap);
// Draw the image (metafile) using default and brush adjustment.
// Red painted with a brush is converted to green.
// All other red is converted to blue (default).
graphics.DrawImage(
&image,
Rect(10, 170, image.GetWidth(), image.GetHeight()), // dest rect
0, 0, image.GetWidth(), image.GetHeight(), // source rect
UnitPixel,
&imAtt);
// Clear the brush remap table.
imAtt.ClearBrushRemapTable();
// Draw the image (metafile) using only default color adjustment.
// Red painted with a brush gets no color adjustment.
// All other red is converted to blue (default).
graphics.DrawImage(
&image,
Rect(10, 250, image.GetWidth(), image.GetHeight()), // dest rect
0, 0, image.GetWidth(), image.GetHeight(), // source rect
UnitPixel,
&imAtt);
}
上記のコードは、特定のファイル Testmetafile4.emf と共に、次の出力を生成しました。 左側の列の省略記号はペンで描画され、右側の列の省略記号にはブラシが塗りつぶされました。 既定の再マップ テーブルは、ペンで描画された省略記号に適用されることに注意してください。 ブラシで塗りつぶされた省略記号に適用される再マップ テーブルは、 ImageAttributes::SetBrushRemapTable 呼び出しと ImageAttributes::ClearBrushRemapTable 呼び出しによって異なります。
要件
サポートされている最小のクライアント | Windows XP、Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | gdiplusimageattributes.h (Gdiplus.h を含む) |
Library | Gdiplus.lib |
[DLL] | Gdiplus.dll |
関連項目
ImageAttributes::ClearRemapTable
ImageAttributes::SetBrushRemapTable