位图函数 (GDI+)

Windows GDI+ 公开由大约 600 个函数组成的平面 API,这些函数在 Gdiplus.dll 中实现,并在 Gdiplusflat.h 中声明。 GDI+ 平面 API 中的函数由大约 40 个 C++ 类的集合包装。 建议不要直接调用平面 API 中的函数。 每当调用 GDI+ 时,都应通过调用 C++ 包装器提供的方法和函数来执行此操作。 Microsoft 产品支持服务不会为直接调用平面 API 的代码提供支持。 有关使用这些包装方法的详细信息,请参阅 GDI+ 平面 API

以下平面 API 函数由 Bitmap C++ 类包装。

位图函数和相应的包装器方法

平面函数 Wrapper 方法 说明
GpStatus WINGDIPAPI GdipCreateBitmapFromStream (IStream* stream, GpBitmap **bitmap) Bitmap::Bitmap 基于流创建 Bitmap::Bitmap 对象。 此函数不使用图像颜色管理 (ICM) 。 当 Bitmap::Bitmap 构造函数的 useEmbeddedColorManagement 参数设置为 FALSE 时,将调用它。
GpStatus WINGDIPAPI GdipCreateBitmapFromFile (GDIPCONST WCHAR* 文件名,GpBitmap **bitmap) Bitmap::Bitmap 基于图像文件创建 Bitmap::Bitmap 对象。 此函数不使用 ICM。 当 Bitmap::Bitmap 构造函数的 useEmbeddedColorManagement 参数设置为 FALSE 时,将调用它。
GpStatus WINGDIPAPI GdipCreateBitmapFromStreamICM (IStream* 流,GpBitmap **bitmap) Bitmap::Bitmap 基于流创建 Bitmap::Bitmap 对象。 此函数使用 ICM。 当 Bitmap::Bitmap 构造函数的 useEmbeddedColorManagement 参数设置为 TRUE 时,将调用它。
GpStatus WINGDIPAPI GdipCreateBitmapFromFileICM (GDIPCONST WCHAR* 文件名, GpBitmap **bitmap) Bitmap::Bitmap 基于图像文件创建 Bitmap::Bitmap 对象。 此函数使用 ICM。 当 Bitmap::Bitmap 构造函数的 useEmbeddedColorManagement 参数设置为 TRUE 时,将调用它。
GpStatus WINGDIPAPI GdipCreateBitmapFromScan0 (INT 宽度、INT 高度、INT 步幅、PixelFormat 格式、BYTE* scan0、GpBitmap** 位图) Bitmap::Bitmap 基于字节数组以及大小和格式信息创建 Bitmap::Bitmap 对象。
GpStatus WINGDIPAPI GdipCreateBitmapFromGraphics (INT 宽度、INT 高度、GpGraphics* 目标、GpBitmap** 位图) Bitmap::Bitmap 基于 Graphics 对象、宽度和高度创建 Bitmap::Bitmap 对象。
GpStatus WINGDIPAPI GdipCreateBitmapFromDirectDrawSurface (IDirectDrawSurface7* surface,GpBitmap** 位图) Bitmap::Bitmap 基于 DirectDraw 图面创建 Bitmap::Bitmap 对象。 Bitmap::Bitmap 对象保留对 DirectDraw 图面的引用,直到 Bitmap::Bitmap 对象被删除或超出范围。
GpStatus WINGDIPAPI GdipCreateBitmapFromGdiDib (GDIPCONST BITMAPINFO* gdiBitmapInfo, VOID* gdiBitmapData, GpBitmap** bitmap) Bitmap::Bitmap 基于 BITMAPINFO 结构和像素数据数组创建 Bitmap::Bitmap 对象。
GpStatus WINGDIPAPI GdipCreateBitmapFromHBITMAP (HBITMAP hbm、HPALETTE hpal、GpBitmap** 位图) Bitmap::Bitmap 基于 Windows Windows 图形设备接口的句柄 (GDI) 位图和 GDI 调色板的句柄创建 Bitmap ::Bitmap 对象。
GpStatus WINGDIPAPI GdipCreateHBITMAPFromBitmap (GpBitmap* 位图、HBITMAP* hbmReturn、ARGB 后台) Bitmap::GetHBITMAP Bitmap::GetHBITMAP 方法从此 Bitmap 对象创建 GDI 位图
GpStatus WINGDIPAPI GdipCreateBitmapFromHICON (HICON hicon, GpBitmap** 位图) Bitmap::Bitmap 基于图标创建 位图 对象。
GpStatus WINGDIPAPI GdipCreateHICONFromBitmap (GpBitmap* 位图,HICON* hbmReturn) Bitmap::GetHICON Bitmap::GetHICON 方法从此 Bitmap 对象创建图标。
GpStatus WINGDIPAPI GdipCreateBitmapFromResource (HINSTANCE hInstance, GDIPCONST WCHAR* lpBitmapName, GpBitmap** 位图) Bitmap::Bitmap 基于应用程序或 DLL 实例句柄和位图资源的名称创建 Bitmap::Bitmap 对象。
GpStatus WINGDIPAPI GdipCloneBitmapArea (REAL x, REAL y, REAL width, REAL height, PixelFormat 格式, GpBitmap *srcBitmap, GpBitmap **dstBitmap) Bitmap::Clone Bitmap::Clone 方法通过复制此位图的一部分创建新的 Bitmap 对象。
GpStatus WINGDIPAPI GdipCloneBitmapAreaI (INT x, INT y, INT width, INT height, PixelFormat 格式, GpBitmap *srcBitmap, GpBitmap **dstBitmap) Bitmap::Clone Bitmap::Clone 方法通过复制此位图的一部分创建新的 Bitmap 对象。
GpStatus WINGDIPAPI GdipBitmapLockBitbits (GpBitmap* 位图, GDIPCONST GpRect* rect, UINT 标志, PixelFormat 格式, BitmapData* lockedBitmapData) Bitmap::LockBits Bitmap::LockBits 方法锁定此位图的矩形部分,并提供可用于以指定格式读取或写入像素数据的临时缓冲区。 调用 Bitmap::UnlockBits 时,写入缓冲区的任何像素数据将复制到 Bitmap 对象。
GpStatus WINGDIPAPI GdipBitmapUnlockBits (GpBitmap* 位图,BitmapData* lockedBitmapData) Bitmap::UnlockBits Bitmap::UnlockBits 方法可解锁之前通过调用 Bitmap::LockBits 锁定的此位图的一部分。
GpStatus WINGDIPAPI GdipBitmapGetPixel (GpBitmap* 位图,INT x,INT y,ARGB *color) Bitmap::GetPixel Bitmap::GetPixel 方法获取此位图中指定像素的颜色。
GpStatus WINGDIPAPI GdipBitmapSetPixel (GpBitmap* 位图,INT x,INT y,ARGB 颜色) Bitmap::SetPixel Bitmap::SetPixel 方法设置此位图中指定像素的颜色。
GpStatus WINGDIPAPI GdipBitmapSetResolution (GpBitmap* 位图、REAL xdpi、REAL ydpi) Bitmap::SetResolution Bitmap::SetResolution 方法设置此 Bitmap 对象的分辨率。
GpStatus WINGDIPAPI GdipBitmapConvertFormat (IN GpBitmap *pInputBitmap, PixelFormat 格式, DitherType dithertype, PaletteType 调色板类型, ColorPalette *palette, REAL alphaThresholdPercent) Bitmap::ConvertFormat Bitmap::ConvertFormat 方法将位图转换为指定的像素格式。 位图中的原始像素数据将替换为新的像素数据。
GpStatus WINGDIPAPI GdipInitializePalette (OUT ColorPalette *palette, PaletteType palettetype, INT optimalColors, BOOL useTransparentColor, GpBitmap *bitmap) Bitmap::InitializePalette Bitmap::InitializePalette 方法初始化标准、最佳或自定义调色板。
GpStatus WINGDIPAPI GdipBitmapApplyEffect (GpBitmap* 位图, CGpEffect *effect, RECT *roi, BOOL useAuxData, VOID **auxData, INT *auxDataSize) Bitmap::ApplyEffect Bitmap::ApplyEffect 方法通过应用指定的效果来更改此 Bitmap 对象。
GpStatus WINGDIPAPI GdipBitmapCreateApplyEffect (GpBitmap **inputBitmaps, INT numInputs, CGpEffect *effect, RECT *roi, RECT *outputRect, GpBitmap **outputBitmap, BOOL useAuxData, VOID **auxData, INT *auxDataSize) Bitmap::ApplyEffect Bitmap::ApplyEffect 方法通过将指定的效果应用于现有 Bitmap 对象来创建新的 Bitmap 对象。
GpStatus WINGDIPAPI GdipBitmapGetHistogram (GpBitmap* 位图、In 直方图Format 格式、IN UINT NumberOfEntries、OUT UINT *channel0、OUT UINT *channel1、OUT UINT *channel2、OUT UINT *channel3) Bitmap::GetHistogram Bitmap::GetHistogram 方法为此 Bitmap 对象的指定颜色通道返回一个或多个直方图。
GpStatus WINGDIPAPI GdipBitmapGetHistogramSize (IN HistogramFormat 格式,OUT UINT *NumberOfEntries) Bitmap::GetHistogramSize Bitmap::GetHistogramSize 返回在调用 Bitmap 对象的Bitmap::GetHistogram 方法之前必须分配的 UINT) 数组中 (元素的数目。
状态 __stdcall GdipCreateEffect (const GUID guid,CGpEffect **effect) 效果 Effect 类的所有后代的构造函数调用 GdipCreateEffect。 例如,模糊构造函数进行以下调用:GdipCreateEffect (BlurEffectGuid、 &nativeEffect) ;BlurEffectGuid 是在 Gdipluseffects.h 中定义的常量。
状态 __stdcall GdipDeleteEffect (CGpEffect *effect) virtual ~Effect () 清理 Bitmap 对象使用的资源。
状态 __stdcall GdipGetEffectParameterSize (CGpEffect *effect, UINT *size) Effect::GetParameterSize Effect::GetParameterSize 方法获取当前为此 Effect 设置的参数的总大小(以字节为单位)。 Effect::GetParameterSize 方法通常在作为 Effect 类后代实例的对象上调用。
状态__stdcall GdipSetEffectParameters (CGpEffect *effect,const VOID *params,const UINT 大小) 效果 Effect 类的每个后代都有一个 SetParameters 方法,该方法调用受保护的方法 Effect::SetParameters,后者又调用 GdipSetEffectParameters。 例如,Blur::SetParameters 方法进行以下调用:Effect::SetParameters (参数、size) 。
状态__stdcall GdipGetEffectParameters (CGpEffect *effect、UINT *size、VOID *params) 效果 Effect 类的每个后代都有一个 GetParameters 方法,该方法调用受保护的方法 Effect::GetParameters,后者又调用 GdipSetEffectParameters。 例如,Blur::GetParameters 方法进行以下调用:Effect::GetParameters (参数、size) 。
GpStatus WINGDIPAPI GdipTestControl (GpTestControlEnum 控件,void * param) 未由包装器调用 用于 GDI+ 的内部测试。 指定图像处理行为中的更改。 参数的含义因控件参数中传递的值而异。
如果 控件 参数设置为 TestControlForceBilinear, 则参数 指向 BOOL 类型的值。 如果该值为 TRUE ,并且当前内插模式不是 InterpolationModeNearestNeighbor,则使用 InterpolationModeBilinear 算法。 如果 参数 指向的值为 FALSE ,或者当前内插模式为 InterpolationModeNearestNeighbor,则 GDI+ 的行为保持不变。
如果 控件 参数设置为 TestControlNoICM, 则参数 指向 类型为 BOOL 的值。 如果该值为 TRUE,则在将图像加载到内存中时,将忽略 ICM 配置文件。 如果参数指向的值为 FALSE,则 GDI+ 的行为保持不变。
如果 控制 参数设置为 TestControlGetBuildNumber, 则 param 是指向 32 位整数变量的输出参数。 该变量接收 GDI+ 内部版本号。
GdipTestControl 不是线程安全的;它假定只有一个线程使用 GDI+ 。 如果在多线程环境中调用 GdipTestControl,则结果不可预知。
GpTestControlEnum 枚举有三个元素:TestControlForceBilinear = 0、TestControlNoICM = 1 和 TestControlGetBuildNumber = 2。