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 です。
戻り値
種類: 状態
メソッドが成功した場合は、Status 列挙体の要素である 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 つの調整カテゴリの色とグレースケールの設定を維持します。 たとえば、既定のカテゴリのしきい値、ビットマップ カテゴリのしきい値、ペン カテゴリに別のしきい値を指定できます。
既定の色とグレースケールの調整設定は、独自の調整設定を持たないすべてのカテゴリに適用されます。 たとえば、ペン カテゴリの調整設定を指定しない場合、既定の設定はペン カテゴリに適用されます。
特定のカテゴリに対してカラーまたはグレースケールの調整設定を指定するとすぐに、既定の調整設定はそのカテゴリに適用されなくなります。 たとえば、既定のカテゴリの調整設定のコレクションを指定するとします。 ColorAdjustTypePen を ImageAttributes::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 |
関連項目
ImageAttributes::ClearColorKey