CImage选件类
CImage 在JPEG、GIF、BMP和可移植网络映像(PNG)格式提供增强的位图支持,包括能够加载和保存图像。
重要事项 |
---|
此选件类及其成员不能在Windows运行时执行的应用程序。 |
class CImage
成员
公共构造函数
名称 |
说明 |
---|---|
构造函数。 |
公共方法
名称 |
说明 |
---|---|
显示具有透明或半透明的像素的位图。 |
|
附加 HBITMAP 到 CImage 对象。可以使用与非DIB部分位图或DIB部分位图。 |
|
将源设备上下文的位图到此当前设备上下文。 |
|
创建DIB部分位图并将它附加到以前构造的 CImage 对象。 |
|
创建DIB部分位图(带有参数)并将它附加到以前构造的 CImage 对象。 |
|
分离 CImage 对象的位图和销毁位图。 |
|
分离 CImage 对象的位图。 |
|
将源矩形的位图到目标矩形。Draw 拉伸或压缩位图如果需要,以适应目标矩形的尺寸和处理alpha混合和透明的颜色。 |
|
检索指向位图的实际像素值。 |
|
检索每像素的位数。 |
|
从项的大小颜色表中检索红色,绿色,蓝色(RGB)颜色值。 |
|
检索当前位图中选择的设备上下文。 |
|
查找可用的图像格式及其说明。 |
|
检索当前图像的高度(以像素为单位)。 |
|
查找可用的图像格式及其说明。 |
|
在颜色表中检索项的最大数目。 |
|
检索当前图像的间距,以字节为单位)。 |
|
检索 x 和 y指定的像素的颜色。 |
|
检索给定像素的地址。 |
|
检索该透明颜色的位置在颜色表中。 |
|
检索当前图像的宽度(以像素为单位)。 |
|
确定附加的位图是否为DIB部分。 |
|
指示位图的颜色映射到标记的调色板。 |
|
指示源位图当前是否正在加载。 |
|
指示应用程序是否支持透明位图和对于Windows 2000或更高版本编译的。 |
|
从指定的文件加载图像。 |
|
从指定的资源加载图像。 |
|
使用指定的掩码和光栅操作,将颜色数据进行源和目标位图。 |
|
在源设备上下文执行从矩形的位块传输到一个平行四边形在目标设备上下文。 |
|
释放检索与 CImage::GetDC的设备上下文。 |
|
释放GDI+使用的资源。必须调用释放全局 CImage 对象创建的资源。 |
|
保存图像,指定类型。保存 不能指定图像选项。 |
|
在部分DIB的颜色表中将项范围的红色,绿色,蓝色RGB)颜色值。 |
|
设置像素在指定坐标到指定的颜色。 |
|
设置像素在指定坐标为颜色在调色板的指定索引。 |
|
设置像素在指定坐标到指定的红色,绿色,蓝色(RGB)值。 |
|
设置被视为透明的颜色的索引。仅在调色板的一种颜色可以透明。 |
|
将源矩形的位图到目标矩形,拉伸或压缩位图以适应目标矩形的尺寸,如果需要。 |
|
复制具有透明的颜色的位图从源设备上下文到此当前设备上下文。 |
公共运算符
名称 |
说明 |
---|---|
返回Windows处理附加到 CImage 对象。 |
备注
CImage 采用设备无关位图(DIB)部分的位图;但是,您可以使用 创建 或 CImage::Load 仅使用DIB部分。使用 附加,可以将非DIB部分位图到 CImage 对象,另一方面,但不能使用以下 CImage 方法,支持DIB只有部分位图:
若要确定附加的位图是否为DIB部分,请调用 IsDibSection.
说明 |
---|
在Visual Studio .NET中Note 2003中,此选件类使 CImage 对象的数量的计数创建。只要计数转到0,函数 GdiplusShutdown 自动调用释放GDI+使用的资源。这样可确保始终正确地直接或间接地销毁DLL创建的所有 CImage 对象,并 GdiplusShutdown 不会从 DllMain调用。 |
说明 |
---|
使用在DLL的全局 CImage 对象不建议使用。如果在DLL需要使用全局 CImage 对象,请调用 CImage::ReleaseGDIPlus 显式释放GDI+使用的资源。 |
CImage 不能选择到新 CDC。CImage 创建其图像自己的 HDC。由于 HBITMAP 可以一次只能选择到一 HDC,HBITMAP 与 CImage 不能选择到另一 HDC。如果需要 CDC,从 CImage 中检索 HDC 并为其 CDC::FromHandle。
示例
// Get a CDC for the image
CDC* pDC = CDC::FromHandle(m_myImage.GetDC());
// Use pDC here
pDC->Rectangle(0, 40, 100, 50);
m_myImage.ReleaseDC();
当在MFC项目时使用 CImage,请注意在项目中哪些成员函数需要指向 CBitmap 对象。如果要使用这样的功能的 CImage,如 CMenu::AppendMenu,使用 CBitmap::FromHandle,将您的 CImageHBITMAP和使用返回的 CBitmap*。
void CMyDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
UNREFERENCED_PARAMETER(nFlags);
CBitmap* pBitmap = CBitmap::FromHandle(m_myImage);
m_pmenuPop->AppendMenu(0, ID_BMPCOMMAND, pBitmap);
ClientToScreen(&point);
m_pmenuPop->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN, point.x,
point.y, this);
}
通过 CImage,您可以访问DIB部分的实际位的。可以使用 CImage 对象的任何位置前面使用Win32 HBITMAP或DIB部分。
说明 |
---|
下面 CImage 方法在其用法的限制: |
方法 |
限制 |
---|---|
仅使用Windows NT 4.0或更高版本一起使用。在运行于Windows 95 /98或更高版本的应用程序将不起作用。 |
|
仅使用Windows NT 4.0或更高版本一起使用。在运行于Windows 95 /98或更高版本的应用程序将不起作用。 |
|
仅使用Windows 2000、Windows 98和更高版本的系统一起使用。 |
|
仅使用Windows 2000、Windows 98和更高版本的系统一起使用。 |
|
支持与Windows 2000、Windows 98和新版本的系统的透明度。 |
请参见 与以前的操作系统的CImage限制 有关这些方法的限制的更多详细信息。
可以使用从MFC或ATL的 CImage。
说明 |
---|
使用 CImage时,将创建一个项目,必须定义 CString,在包括 atlimage.h之前。如果您的项目使用ATL,不使用MFC,请包括 atlstr.h,在包括 atlimage.h之前。如果您的项目使用MFC (或者,如果它是使用MFC的一个ATL项目支持),请包括 afxstr.h,在包括 atlimage.h之前。 同样,在包括 atlimpl.cpp之前,必须包括 atlimage.h。若要轻松地完成此操作,请包括 atlimage.h 在您的 stdafx.h。 |
要求
Header: atlimage.h