首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC 怎么通过位图句柄获得位图数据?

2012-04-15 
MFC 如何通过位图句柄获得位图数据?急~在线等!!!已知有一位图句柄。现要通过位图句柄获得到位图的数据赋给C

MFC 如何通过位图句柄获得位图数据?急~在线等!!!
已知有一位图句柄。
现要通过位图句柄获得到位图的数据赋给CString

求代码。

[解决办法]
试试GetDIBits
[解决办法]

探讨
引用:
试试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打开图片和你读出来的数据大致对比一下就知道有没有问题了
[解决办法]
探讨
人呢 人呢?????????获取位图的数据流这么难么?

热点排行