CBitmap

 类CBitmap封装了Windows图形设备接口(GDI)中的位图,并且提供了操纵位图的成员函数。使用CBitmap对象之前要先构造CBitmap对象,调用其中的一个初始化成员函数设置位图对象的句柄。此后就可以调用其它成员函数了。要了解有关使用像CBitmap这样的图形对象的详细信息,请参阅联机文档“Visual C++ 程序员指南”中的“图形对象”。#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::LoadBitmap,
CBitmap::LoadOEMBitmap,
CBitmap::CreateBitmap,
CBitmap::BitmapIndirect,
CBitmap::CreateCompatibleBitmap,
CBitmap::CreateDiscardableBitmap

CBitmap::CreateBitmap
BOOL CreateBitmap( int nWidth, int nHeight, UINT nPlanes, UINTnBitcount, 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中的说明。
请参阅  CDC::SelectObject,
CgdiObject::DeleteObject,
CDC::BitBlt, ::CreateBitmap

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对象,要先从设备上下文中移出该位图,然后删除该对象。
请参阅  
CDC::SelectObject,
CDC::BitBlt,
CgdiObject::DeleteObject,
CgdiObject::GetObject,
::CreateBitmapIndirect

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

CBitmap::CreateDiscardableBitmap
BOOL CreateDiscardableBitmap( CDC* pDC, int nWidth, int nHeight );
返回值
调用成功时返回非零值,否则为0。
参数
pDC指定设备上下文。
NWidth指定位图的宽度(以像素数为单位)。
NHeight指定位图的高度(以像素数为单位)。
说明
本函数初始化一个与pDC指定的设备上下文兼容的可丢弃的位图。位图与指定的设备上下文具有相同的颜色位面数或相同的每个像素的位数。任何与pDC指定的设备兼容的内存设备都可以选择它作为当前位图。应用没有把该函数建立的位图选到某个显示上下文中时,Windows可以丢弃该位图。如果在Windows丢弃了该位图之后,应用又试图选中该位图,函数CDC::SelectObject将返回NULL。终止用CreateDiscardableBitmap建立的CBitmap对象,要先从设备上下文中移出该位图,然后删除该对象。
请参阅  ::CreateDiscardableBitmap,
CgdiObject::DeleteObject

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结构中。
请参阅  BITMAP

CBitmap::GetBitmapBits
DWORD GetBitmapBits( DWORD dwCount, LPVOID lpBits ) const;
返回值
调用成功时返回位图的实际字节数,否则为0。
参数
dwCount指定要拷贝的字节数。
LpBits指向接收位图内容的缓冲。位图用字节数组表示,该数组与一个由很多双字节(16位)组成的结构等价。
说明
本函数把CBitmap对象的位模式拷贝到lpBits指向的缓冲中。参数dwCount指定待拷贝的字节数。可以调用函数CgdiObject::GetObject得到指定位图的正确dwCount值。
请参阅  CgdiObject::GetObject,
    ::GetBitmapBits

CBitmap::GetBitmapDimension
Csize GetBitmapDimension( ) const;
返回值
返回位图的宽度和高度,以0.1毫米为单位。位图高度存放在Csize对象的成员cy中,宽度存放在成员cx中。如果没有调用SetBitmapDimension设置位图的宽度和高度,函数将返回0。
说明
本函数返回位图的宽度和高度。调用之前应已经调用SetBitmapDimension设置位图的宽度和高度。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/linhong835/archive/2008/04/11/2281117.aspx

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个用于C++ MFC开发的Bitmap图片操作类,在文件中叫CBitmapEx,可用于放大,缩小,翻转,过渡和其他有用的功能,有兴趣的朋友可以下载看看。 部分public method: // // void Create(long width, long height); // void Create(CBitmapEx& bitmapEx); // void Load(LPTSTR lpszBitmapFile); // void Save(LPTSTR lpszBitmapFile); // void Scale(long horizontalPercent=100, long verticalPercent=100); // void Rotate(long degrees=0, _PIXEL bgColor=_RGB(0,0,0)); // void FlipHorizontal(); // void FlipVertical(); // void MirrorLeft(); // void MirrorRight(); // void MirrorTop(); // void MirrorBottom(); // void Clear(_PIXEL clearColor=_RGB(0,0,0)); // void Negative(); // void Grayscale(); // void Sepia(long depth=34); // void Emboss(); // void Engrave(); // void Pixelize(long size=4); // void Draw(HDC hDC); // void Draw(long dstX, long dstY, long width, long height, // CBitmapEx& bitmapEx, long srcX, long srcY); // void Draw(long dstX, long dstY, long width, long height, // CBitmapEx& bitmapEx, long srcX, long srcY, long alpha); // void Draw(long dstX, long dstY, long dstWidth, long dstHeight, // CBitmapEx& bitmapEx, long srcX, long srcY, long srcWidth, long srcHeight); // void Draw(long dstX, long dstY, long dstWidth, long dstHeight, CBitmapEx& bitmapEx, // long srcX, long srcY, long srcWidth, long srcHeight, long alpha); // void DrawTransparent(long dstX, long dstY, long width, long height, // CBitmapEx& bitmapEx, long srcX, long srcY, _PIXEL transparentColor=_RGB(0,0,0)); // void DrawTransparent(long dstX, long dstY, long width, long height, // CBitmapEx& bitmapEx, long srcX, long srcY, long alpha, // _PIXEL transparentColor=_RGB(0,0,0)); // void DrawTransparent(long dstX, long dstY, long dstWidth, long dstHeight, // CBitmapEx& bitmapEx, long srcX, long srcY, long srcWidth, long srcHeight, // _PIXEL transparentColor=_RGB(0,0,0)); // void DrawTransparent(long dstX, long dstY, long dstWidth, long dstHeight, // CBitmapEx& bitmapEx, long srcX, long srcY, long srcWidth, long srcHeight, // long alpha, _PIXEL transparentColor=_RGB(0,0,0)); // LPBI

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值