国外有哪些优秀的网站,企业管理培训课程价格表,网站开发流程视频,网站开发视频下载一、CBitmap类主要是加载位图资源#xff0c;或者建立一个空白位图用于存储画面。
BOOL LoadBitmap(UINT nIDResource)从工程资源中加载一张位图BOOL LoadOEMBitmap(UINT nIDBitmap)从系统资源中加载一张位图BOOL CreateBitmap(int nWidth, int nHeigjt, UINT nPlane, UINT n…一、CBitmap类主要是加载位图资源或者建立一个空白位图用于存储画面。
BOOL LoadBitmap(UINT nIDResource)从工程资源中加载一张位图BOOL LoadOEMBitmap(UINT nIDBitmap)从系统资源中加载一张位图BOOL CreateBitmap(int nWidth, int nHeigjt, UINT nPlane, UINT nBitCnt, const void* lpBits)根据指定的值创建一张位图BOOL CreateCompatibleBitmap(CDC* pDC, int nWidth, int nHeight)根据高宽创建一张兼容位图BOOL CreateBitmapIndirect(LPBITMAP lpBitmap)根据BITMAP结构体创建一张空白位图int GetBitamp(BITMAP* pBitmap)根据BITMAP结构体获取位图属性信息static CBitmap* FromHandle(HBITMAP hBitmap)将HBITMAP句柄转换为CBitamp对象operator HBITMAP() const从CBitmap对象中获取HBITMAP句柄
BITMAP结构体
/* Bitmap Header Definition */
typedef struct tagBITMAP{LONG bmType;LONG bmWidth;LONG bmHeight;LONG bmWidthBytes;WORD bmPlanes;WORD bmBitsPixel;LPVOID bmBits;} BITMAP, *PBITMAP, NEAR *NPBITMAP, FAR *LPBITMAP;
二、兼容位图CreateCompatibleBitmap和非兼容位图CreateBitmap的区别
兼容位图即DDB由CreateCompatibleBitmap创建
非兼容位图即DIB是由LoadImage、SHLoadBitmap、CreateDIBSection、CreateBitmap创建。 1.非兼容位图 和 兼容位图有两个本质差别 第一个区别是兼容位图的存放空间通常由GWES或显示驱动分配处于驱动层之中可以获取到存放数据的物理地址而非兼容位图的存放空间通常由应用程序分配处于应用层中不能获取到物理地址。 第二个区别是兼容位图与显示驱动的位深和像素格式保持一致WinCE显示驱动的位深和格式是固定的如显示驱动采用的是16位RGB565的位深和像素格式则兼容位图的格式也一样而非兼容位图通常不相同即它内部可能是32位位深ARGB的格式也有可能是24位RGB888的格式。
2.以上两个区别意味着 第一个区别意味着非兼容位图无法享受2D显示模块的硬件加速硬件加速的原理类似DMA需要物理地址而非兼容位图获取不到物理地址自然无法进行硬件加速。 第二个区别意味着非兼容位图拷贝到显示界面上往往需要进行颜色转换因为它要符合显示驱动的颜色格式才能正常地显示出来常用的位图格式是24位RGB888而显示驱动常用的格式是16位RGB565、32位ARGB8888自然免不了转换这部分工作都是在显示驱动中进行的如果仅有一两次转换或少量像素的转换可能不会有什么但如果是大量的绘图操作意味着每次拷贝都会进行转换这将把宝贵的系统资源消耗在位图的转换上。