//用GetBitmap获得图像数据大小
//用GetBitmapBits获得数据数组
BITMAP temBmp;
pBmp->GetBitmap(&temBmp);
iDataSize = ((temBmp.bmWidth + 31 ) / 32 * 4) * temBmp.bmHeight;//图像数据大小
pBmp->GetBitmapBits(iDataSize, pBits);//拷贝图像数据
memcpy(pByteBuff, pBmInfo, iHeadInfoSize);//拷贝头信息
拷贝位图中的信息到CBBitmap
int iHeadInfoSize = sizeof(BITMAPINFOHEADER) + 2 * sizeof(RGBQUAD);//信息头大小
int iDataSize = ((iWidth + 31) / 32) * 4 * iHeight;//图像数据大小
int iTotalBytes = iHeadInfoSize + iDataSize;
BYTE *pByteBuff = new BYTE[iTotalBytes];
memset(pByteBuff, 0, iTotalBytes);
memcpy(pByteBuff, pBmInfo, iHeadInfoSize);//拷贝头信息
BYTE *pBits = pByteBuff + iHeadInfoSize; //将指针移动到数据区
memcpy(pBits, bmp.bmBits,iDataSize);//拷贝图像数据
CString sFilePath = _T("");//将CBitmap中的数据转到BYTE数组,然后存到CBBitmap中
CBPoint startPt(boxRect.left, boxRect.top);
iTotalBytes = iHeadInfoSize +iDataSize;
setContents(sFilePath, iTotalBytes, pByteBuff, boxRect.width(), boxRect.height(), startPt);
CBITMAP转为BYTE数组
最新推荐文章于 2024-07-09 21:52:34 发布