ImageAttributes::SetThreshold 方法 (gdiplusimageattributes.h)

ImageAttributes::SetThreshold 方法设置指定类别 (透明度范围) 阈值。

语法

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

parameters

[in] threshold

类型: REAL

指定阈值的数。

[in, optional] type

类型: ColorAdjustType

ColorAdjustType 枚举的元素,该元素指定为其设置颜色阈值的类别。 默认值为 ColorAdjustTypeDefault

返回值

类型: 状态

如果该方法成功,则返回 Ok,这是 Status 枚举的元素。

如果方法失败,它将返回 Status 枚举的其他元素之一。

注解

阈值是一个介于 0 到 1 之间的值,该值指定每个颜色分量的截止点。 例如,假设阈值设置为 0.7,并假设要呈现其红色、绿色和蓝色分量为 230、50 和 220 的颜色。 红色分量 230 大于 0.7×255,因此红色分量将更改为 255 (完整强度) 。 绿色分量 50 小于 0.7×255,因此绿色分量将更改为 0。 蓝色分量 220 大于 0.7×255,因此蓝色分量将更改为 255。

ImageAttributes 对象维护五个调整类别的颜色和灰度设置:默认、位图、画笔、笔和文本。 例如,可以为默认类别指定阈值,为位图类别指定阈值,并为笔类别指定其他阈值。

默认的颜色和灰度调整设置适用于没有自己调整设置的所有类别。 例如,如果从未为笔类别指定任何调整设置,则默认设置适用于笔类别。

为特定类别指定颜色或灰度调整设置后,默认调整设置将不再应用于该类别。 例如,假设为默认类别指定调整设置的集合。 如果通过将 ColorAdjustTypePen 传递给 ImageAttributes::SetThreshold 方法设置笔类别的阈值,则默认调整设置都不会应用于笔。

示例

以下示例基于 .bmp 文件创建 Image 对象。 该代码还会创建 ImageAttributes 对象,并将其位图阈值设置为 0.6。 然后,代码绘制图像两次:一次不调整颜色,一次使用阈值指定的调整。


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

图像

ImageAttributes

ImageAttributes::ClearColorKey

ImageAttributes::ClearThreshold

ImageAttributes::SetColorKey

Metafile

重新着色