CBitmap

CBitmap

CObject
 └CGdiObject
    └CBitmap

CBitmap是MFC中的类。类CBitmap封装了Windows图形设备接口(GDI)中的位图,并且提供了操纵位图的成员函数。使用CBitmap对象之前要先构造CBitmap对象,调用其中的一个初始化成员函数设置位图对象的句柄。此后就可以调用其它成员函数了。
#include <afxwin.h>


CBitmap类的成员

构造函数
CBitmap 构造一个CBitmap对象

初始化函数
LoadBitmap 从应用的可执行文件中加载一个命名的位图资源来初始化位图对象
LoadOEMBitmap 加载一个预定义的Windows位图来初始化位图对象
LoadMappedBitmap 加载一个位图并把它的颜色映射为系统颜色
CreateBitmap 用一个指定宽度、高度和位图模式的依赖于设备的内存位图初始化位图对象
CreateBitmapIndirect 用BITMAP结构中给出的宽度、高度和模式(可以不指定)的位图初始化位图对象
CreateCompatibleBitmap 用一个位图初始化对象使之与指定设备兼容
CreateDiscardableBitmap 用一个可丢弃的、与指定设备兼容的位图初始化对象

属性
GetBitmap 用位图信息填充BITMAP结构
operator HBITMAP 返回CBitmap对象上的Windows句柄

操作
FromHandle 给出Windows HBITMAP结构的指针时,返回指向CBitmap对象的指针
SetBitmapBits 把位图的位设为指定的值
GetBitmapBits 拷贝指定位图的位值到指定的缓冲
SetBitmapDimension 设置位图的宽度和高度(以0.1毫米为单位)
GetBitmapDimension 返回位图的宽度和高度。要求已经调用SetBitmapDimension设置位图的宽度和高度

CBitmap::CBitmap

CBitmap();

说明:
构造一个CBitmap对象。生成的对象必须用下面的一个成员函数进行初始化。

CBitmap::CreateBitmap

BOOL CreateBitmap( int nWidth, int nHeight, UINT nPlanes, UINT nBitcount, const void* lpBits );

返回值:调用成功时返回非零值,否则为0。

参数:
nWidth 指定位图的宽度(以像素数为单位)。
nHeight 指定位图的高度(以像素数为单位)。
nPlanes 指定位图中的彩色位面数。
nBitCount 指定位图中每个像素颜色的位数。
lpBits 指向一个短整型数组,数组中记录了位图的初始位值。如果为NULL,则新的位图没有被初始化。

说明:
本函数用指定的宽度、高度和位模式初始化依赖于设备的内存位图。
对彩色位图来说,参数nPlanes和nBitcount要有一个被设置为1。如果二者都被设置为1,则建立一个黑白位图。
虽然不能为显示设备直接选中一个位图,但可以调用CDC::SelectObject把位图置为内存设备上下文(memory device context)的当前位图,然后调用CDC::BitBlt函数把它拷贝到任何兼容的设备上下文中。
终止用CreateBitmap建立的CBitmap对象,先要从设备上下文中移出该位图,然后删除该对象。
要了解有关的更详细信息,请参阅BITMAP结构中对成员bmBits的描述。BITMAP结构在成员函数CBitmap::CreateBitmapIndirect中的说明。

CBitmap::CreateBitmapIndirect

BOOL CreateBitmapIndirect( LPBITMAP lpBitmap );

返回值:调用成功时返回非零值,否则为0。

参数:
lpBitmap 指向包含有关位图信息的BITMAP结构。

说明:
本函数用lpBitmap指向的结构中指定的宽度、高度和位模式(可以不指定)初始化位图对象。虽然显示设备不能直接选中一个位图,但可以调用CDC::Select Object把位图置为内存设备上下文(memory device context)的当前位图,然后调用CDC::BitBlt或CDC::StrechBlt把它拷贝到任何兼容的设备上下文中(CDC::PatBlt 函数能把当前画刷的位图直接拷贝到显示设备的上下文中)。
如果已经调用函数GetObject填充了lpBitmap指向的结构,则位图的位值没有指定,并且位图未被初始化。要初始化该位图,应用可以调用CDC:BitBlt或::SetDIBits把CgdiObject::GetObject函数的第一个参数指定的位图的位值拷贝到CreateBitmapIndirect建立的位图中。
终止用CreateBitmapIndirect建立的CBitmap对象,要先从设备上下文中移出该位图,然后删除该对象。

CBitmap::CreateCompatibleBitmap

BOOL CreateCompatibleBitmap( CDC* pDC, int nWidth, int nHeight );

返回值:调用成功时返回非零值,否则为0。

参数:
pDC 指定设备上下文。
nWidth 指定位图的宽度(以像素数为单位)。
nHeight 指定位图的高度(以像素数为单位)。

说明:
初始化一个与pDC指定的设备上下文兼容的位图。位图与指定的设备上下文具有相同的颜色位面数或相同的每个像素的位数。任何与pDC指定的设备兼容的内存设备都可以选择它作为当前位图。
如果pDC指向的是内存设备上下文,则返回的位图与设备上下文中当前选中的位图具有相同的格式。“内存设备上下文”是一块表示一块显示区域的内存,它可以把图像存储在内存中,以备拷贝到兼容设备的真实显示区域中。
建立一个内存设备上下文时,GDI自动地为它选择一个黑白原始位图。既然彩色内存设备上下文的当前位图既可以是彩色的也可以是黑白的,CreateCompatibleBitmap返回的位图就不一定是相同的格式设置。但是,非内存设备上下文的兼容位图的格式总是和设备的格式一致。
终止用CreateCompatibleBitmap建立的CBitmap对象,要先从设备上下文中移出位图,然后删除该对象。

CBitmap::CreateDiscardableBitmap

BOOL CreateDiscardableBitmap( CDC* pDC, int nWidth, int nHeight );

返回值:调用成功时返回非零值,否则为0。

参数:
pDC 指定设备上下文。
nWidth 指定位图的宽度(以像素数为单位)。
nHeight 指定位图的高度(以像素数为单位)。

说明:
本函数初始化一个与pDC指定的设备上下文兼容的可丢弃的位图。位图与指定的设备上下文具有相同的颜色位面数或相同的每个像素的位数。任何与pDC指定的设备兼容的内存设备都可以选择它作为当前位图。
应用没有把该函数建立的位图选到某个显示上下文中时,Windows可以丢弃该位图。如果在Windows丢弃了该位图之后,应用又试图选中该位图,函数CDC::SelectObject将返回NULL。
终止用CreateDiscardableBitmap建立的CBitmap对象,要先从设备上下文中移出该位图,然后删除该对象。

CBitmap::FromHandle

static CBitmap* PASCAL FromHandle( HBITMAP hBitmap );

返回值:调用成功时返回一个指向CBitmap对象的指针,否则返回NULL。

参数:
hBitmap 指定一个Windows GDI 位图的句柄。

说明:

本函数在调用时指定一个Windows GDI 位图的句柄,返回一个指向CBitmap对象的指针。如果该句柄上没有相联系的CBitmap对象,则为该句柄建立一个临时CBitmap对象。该临时CBitmap对象保持有效,直到应用在它的事件循环中出现空闲时间,此时Windows会删除所有的临时图形对象。换句话说,临时对象仅在一个Windows消息的处理过程中有效。

CBitmap::GetBitmap

int GetBimap( BITMAP* pBitMap );

返回值:调用成功时返回非零值,否则为0。

参数:

pBitMap 指向BITMAP结构的一个指针,不能为NULL。

说明:
本函数用于查看CBitmap对象的信息。返回的信息存放在pBitMap指向的BITMAP结构中。

CBitmap::GetBitmapBits

DWORD GetBitmapBits( DWORD dwCount, LPVOID lpBits ) const;

返回值:调用成功时返回位图的实际字节数,否则为0。

参数:
dwCount 指定要拷贝的字节数。
lpBits 指向接收位图内容的缓冲。位图用字节数组表示,该数组与一个由很多双字节(16位)组成的结构等价。

说明:
本函数把CBitmap对象的位模式拷贝到lpBits指向的缓冲中。参数dwCount指定待拷贝的字节数。可以调用函数CgdiObject::GetObject得到指定位图的正确dwCount值。

CBitmap::GetBitmapDimension

CSize GetBitmapDimension( ) const;

返回值:
返回位图的宽度和高度,以0.1毫米为单位。位图高度存放在Csize对象的成员cy中,宽度存放在成员cx中。如果没有调用SetBitmapDimension设置位图的宽度和高度,函数将返回0。

说明:
本函数返回位图的宽度和高度。调用之前应已经调用SetBitmapDimension设置位图的宽度和高度。

CBitmap::LoadBitmap

BOOL LoadBitmap( LPCTSTR lpszRecourceName );
BOOL LoadBitmap( UINT nIDResource );

返回值:调用成功时返回非零值,否则为0。

参数:
lpszResourceName 指向一个包含了位图资源名字的字符串(该字符串以null结尾)。
nIDResource 指定位图资源中资源的ID号。

说明:
本函数从应用的可执行文件中加载由lpszResourceName指定名字或者由nIDResource指定的ID号标志的位图资源。加载的位图被附在CBitmap对象上。
如果由lpszResourceName指定名字的对象不存在,或者没有足够的内存加载位图,函数将返回0。
可以调用函数CgdiObject::DeleteObject删除由LoadBitmap加载的位图,否则CBitmap的析构函数将删除该位图对象。
警告:在删除位图对象之前,要保证它没有被选到设备上下文中。
在Windows3.1以及以后的版本中,增加了如下的位图:
OBM_UPARROWI
OBM_DNARROWI
OBM_RGARROWI
OBM_LFARROWI
在Windows3.0或者更早版本的设备驱动程序中不支持这些位图。位图的完整列表和图形请参阅“Win32程序员参考”。

CBitmap::LoadMappedBitmap

BOOL LoadmappedBitmap(
     UINT nIDBitmap,
     UNIT nFlags = 0,
     LPCOLORMAP lpColorMap = NULL,
     int nMapSize = 0
    );

返回值:调用成功时返回非零值,否则为0。

参数:
nIDBitmap 位图资源的ID号。
nFlags 位图的标记。可以是0或者CMB_MASKED。
lpColorMap 指向COLORMAP结构的一个指针。结构中记录了映射位图所需的颜色信息。如果本参数为NULL,函数将使用缺省的颜色映射。
nMapsize 由lpColorMap指向的颜色映射的数目。

说明:
本函数加载一个位图并把它的颜色映射为当前系统颜色。缺省时LoadMapped Bitmap将映射通常在按钮图形中采用的颜色。
要建立一个映射的位图,请参阅“Win32 程序员参考”中的Windows函数::CreateMappedBitmap以及COLORMAP结构。

CBitmap::LoadOEMBitmap

BOOL LoadOEMBitmap( UINT nIDBitmap );

返回值:调用成功返回非零值,否则为0。

参数:
nIDBitmap 预定义的Windows位图的ID号。具体定义在头文件WINDOWS.H中。可用的值如下:
OBM_BTNCORNERS OBM_OLD_RESTORE
OBM_BTSIZE OBM_OLD_RGARROW
OBM_CHECK OBM_OLD_UPARROW
OBM_CHECKBOXES OBM_OLD_ZOOM
OBM_CLOSE OBM_REDUCE
OBM_COMBO OBM_REDUCED
OBM_DNARROW OBM_RESTORE
OBM_DNARROWD OBM_RESTORED
OBM_DNARROWI OBM_RGARROW
OBM_LFARROW OBM_RGARROWD
OBM_LFARROWD OBM_RGARROWI
OBM_LFARROWI OBM_SIZE
OBM_MNARROW OBM_UPARROW
OBM_OLD_CLOSE OBM_UPARROWD
OBM_OLD_DNARROW OBM_UPARROWI
OBM_OLD_LFARROW OBM_ZOOM
OBM_OLD_REDUCE OBM_ZOOMD

说明:
本函数用于加载一个Windows预定义的位图。以OBM_OLD开头的位图名表示它们是在Windows3.0之前的版本采用的。
使用不是以OBM_OLD开头的常量,需要在包括头文件WINDOW.H之前定义常量OEMRESOURCE。

CBitmap::SetBitmapBits

DWORD SetBitmapBits( DWORD dwCount, const void* lpBits );

返回值:调用成功时返回设置位图位值的字节数,否则为0。

参数:
dwCount 指定由lpBits指向的字节数。
lpBits 指向一个BYTE类型的数组,数组中记录了要拷贝到CBitmap对象的位值。

说明:本函数用lpBits指定的位值设置位图的位值。

CBitmap::SetBitmapDimension

CSize SetBitmapDimension (int nWidth, int nHeight);

返回值:
返回前一个位图的维数。高度存放在CSize对象的成员cy中,宽度存放在成员cx中。

参数:
nWidth 指定位图的宽度(以0.1毫米为单位)。
nHeight 指定位图的高度(以0.1毫米为单位)。

说明:
本函数用于设置位图的高度和宽度。GDI一般不用这些数字,除非应用调用成员函数GetBitmapDimension来获取它们。

CBitmap::operator HBITMAP

operator HBITMAP( ) const;

返回值:
调用成功时返回一个由CBitmap对象表示的Windows GDI对象的句柄,否则返回NULL。

说明:
本操作符用于取得CBitmap对象上的Windows GDI对象句柄。这是一个校验性操作符,可直接参考HBITMAP对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值