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

ImageAttributes::SetThreshold メソッドは、指定されたカテゴリのしきい値 (透明度範囲) を設定します。

構文

Status SetThreshold(
  [in]           REAL            threshold,
  [in, optional] ColorAdjustType type
);

パラメーター

[in] threshold

型: REAL

しきい値を指定する REAL 番号。

[in, optional] type

型: ColorAdjustType

色のしきい値が設定されているカテゴリを指定する ColorAdjustType 列挙体の要素。 既定値は ColorAdjustTypeDefault です

戻り値

型: 状態

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

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

注釈

しきい値は 0 から 1 までの値で、各色コンポーネントのカットオフ ポイントを指定します。 たとえば、しきい値が 0.7 に設定されていて、赤、緑、青の各コンポーネントが 230、50、220 である色をレンダリングするとします。 赤のコンポーネント 230 は 0.7×255 より大きいので、赤のコンポーネントは 255 (完全な強度) に変更されます。 緑のコンポーネント (50) は 0.7×255 未満であるため、緑のコンポーネントは 0 に変更されます。 青のコンポーネント 220 は 0.7×255 より大きいので、青のコンポーネントは 255 に変更されます。

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

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

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

次の例では、.bmp ファイルに基づいて Image オブジェクトを作成します。 また、このコードは ImageAttributes オブジェクトを 作成し、そのビットマップしきい値を 0.6 に設定します。 次に、コードはイメージを 2 回描画します。1 回は色調整なし、1 回はしきい値で指定された調整です。


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

   // Create an Image object based on a .bmp file.
   // The image has one stripe with RGB components (160, 0, 0)
   // and one stripe with RGB components (0, 140, 0).
   Image image(L"RedGreenThreshold.bmp");

   // Create an ImageAttributes object, and set its bitmap threshold to 0.6.
   ImageAttributes imAtt;
   imAtt.SetThreshold(0.6f, ColorAdjustTypeBitmap);

   // Draw the image with no color adjustment.
   graphics.DrawImage(&image, 10, 10, image.GetWidth(), image.GetHeight());
 
   // Draw the image with the threshold applied.
   // 160 > 0.6*255, so the red stripe will be changed to full intensity.
   // 140 < 0.6*255, so the green stripe will be changed to zero intensity.   
   graphics.DrawImage(&image,
      Rect(100, 10, image.GetWidth(), image.GetHeight()),  // dest rect
      0, 0, image.GetWidth(), image.GetHeight(),           // source rect
      UnitPixel,
      &imAtt);
}
				

次の図は、上記のコードの出力を示しています。 赤は最大強度に変換され、緑はゼロ強度に変換されることに注意してください。

マルーンと緑の領域を持つ四角形と、同じ四角形が赤と黒でレンダリングされていることを示す図

要件

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

こちらもご覧ください

Bitmap

ColorAdjustType

Image

ImageAttributes

ImageAttributes::ClearColorKey

ImageAttributes::ClearThreshold

ImageAttributes::SetColorKey

メタファイル

色変更