次の方法で共有


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

ImageAttributes::SetRemapTable メソッドは、指定したカテゴリのカラー 再マップ テーブルを設定します。

構文

Status SetRemapTable(
  [in]           UINT            mapSize,
  [in]           const ColorMap  *map,
  [in, optional] ColorAdjustType type
);

パラメーター

[in] mapSize

型: UINT

マップ配列内の要素の数を指定する INT

[in] map

型: const ColorMap*

カラー マップを定義する ColorMap 構造体の配列へのポインター。

[in, optional] type

種類: ColorAdjustType

ColorAdjustType 列挙体の要素で、カラー 再マップ テーブルが設定されるカテゴリを指定します。 既定値は ColorAdjustTypeDefault です

戻り値

種類: 状態

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

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

解説

color-remap テーブルは、 ColorMap 構造体の配列です。 各 ColorMap 構造体には 2 つの Color オブジェクトがあります。1 つは古い色を指定し、1 つは対応する新しい色を指定します。 レンダリング中に、再マップ テーブルの古い色のいずれかに一致するすべての色が、対応する新しい色に変更されます。

ImageAttributes オブジェクトは、既定、ビットマップ、ブラシ、ペン、テキストの 5 つの調整カテゴリの色とグレースケールの設定を維持します。 たとえば、既定のカテゴリの色の再マップ、ビットマップ カテゴリのカラー 再マップ テーブル、およびペン カテゴリの別のカラー 再マップ テーブルを指定できます。

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

特定のカテゴリに対して色調整またはグレースケール調整設定を指定するとすぐに、既定の調整設定がそのカテゴリに適用されなくなります。 たとえば、既定のカテゴリの調整設定のコレクションを指定するとします。 ColorAdjustTypePenImageAttributes::SetRemapTable メソッドに渡して、ペン カテゴリのカラー 再マップ テーブルを設定した場合、既定の調整設定はペンに適用されません。

次の例では、.bmp ファイルに基づいて Image オブジェクトを作成し、イメージを描画します。 このコードでは 、ImageAttributes オブジェクトを作成し、赤が青に変換されるように既定の再マップ テーブルを設定します。 次に、再マップ テーブルで指定された色調整を使用して、イメージをもう一度描画します。


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

   // Create an Image object based on a .bmp file.
   // The image has one red stripe and one green stripe.
   Image image(L"RedGreenStripes.bmp");

   // Create an ImageAttributes object and set its remap table.
   ImageAttributes imageAtt;
   ColorMap cMap;
   cMap.oldColor = Color(255, 255, 0, 0);  // red 
   cMap.newColor = Color(255, 0, 0, 255);  // blue
   imageAtt.SetRemapTable(12, &cMap,
      ColorAdjustTypeDefault);

   // Draw the image with no color adjustment.
   graphics.DrawImage(&image, 10, 10, image.GetWidth(), image.GetHeight());
 
   // Draw the image with red converted to blue.
   graphics.DrawImage(&image,
      Rect(100, 10, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),           // source rect
      UnitPixel,
      &imageAtt);
}
				

次の図は、前のコードの出力を示しています。

赤と緑の領域を持つ四角形を示す図。次に、赤の領域が青に置き換えられた同じ四角形

要件

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

関連項目

Bitmap

Color

ColorAdjustType

カラーマップ

イメージ

ImageAttributes

ImageAttributes::ClearRemapTable

メタファイル

色変更