MFC 如何通过位图句柄获得位图数据?急~在线等!!!已知有一位图句柄。现要通过位图句柄获得到位图的数据赋给C
MFC 如何通过位图句柄获得位图数据?急~在线等!!!
已知有一位图句柄。
现要通过位图句柄获得到位图的数据赋给CString
求代码。
[解决办法]
试试GetDIBits
[解决办法]
[解决办法]这是我以前写的一个,获取屏幕像素的,实现远程,希望对你有用,
hScreenDC= CreateDC(TEXT("DISPLAY"), NULL, NULL, NULL);
hMemDC= CreateCompatibleDC(hScreenDC);
hMemBitmap= CreateCompatibleBitmap(hScreenDC, iWidth, iHeight);
hOldBitmap= (HBITMAP)SelectObject(hMemDC, hMemBitmap);
StretchBlt(hMemDC, 0, 0, iWidth, iHeight, hScreenDC, iXStartPos, iYStartPos, iWidth, iHeight, SRCCOPY);
hMemBitmap= (HBITMAP)SelectObject(hMemDC, hOldBitmap);
dwColorTableLength = GetColorTableLength(iBitsPerPixel);
dwBmpDataSize = GetBitmapDataLength(iWidth, iHeight, iBitsPerPixel);
free(m_pbmInfo);
m_pbmInfo = (LPBITMAPINFO)malloc(sizeof(BITMAPINFOHEADER) + dwColorTableLength);
if (m_pbmInfo == NULL)
{
retVal = FALSE;
__leave;
}
memset(m_pbmInfo, 0, sizeof(BITMAPINFOHEADER) + dwColorTableLength);
free(m_pbmData);
m_pbmData = (LPBYTE)malloc(dwBmpDataSize);
if (m_pbmData == NULL)
{
retVal = FALSE;
__leave;
}
memset(m_pbmData, 0, dwBmpDataSize);
m_pbmInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
m_pbmInfo->bmiHeader.biWidth = iWidth;
m_pbmInfo->bmiHeader.biHeight = iHeight;
m_pbmInfo->bmiHeader.biPlanes = 1;
m_pbmInfo->bmiHeader.biBitCount = iBitsPerPixel;
m_pbmInfo->bmiHeader.biCompression = BI_RGB;
iret = GetDIBits(hScreenDC, hMemBitmap, 0, iHeight, m_pbmData, m_pbmInfo, DIB_RGB_COLORS);
if (iret == 0)
{
retVal = FALSE;
__leave;
}
free(m_pbmFileHeader);
m_pbmFileHeader = (PBITMAPFILEHEADER)malloc(sizeof(BITMAPFILEHEADER));
if (m_pbmFileHeader == NULL)
{
retVal = FALSE;
__leave;
}
[解决办法][解决办法]你把读出来的数据先写到一个文件里,用UE打开图片和你读出来的数据大致对比一下就知道有没有问题了
[解决办法]