SetDIBitsToDevice 位图问题?

hitzheng 2009-03-14 03:07:01
在用这个函数的时候,只有当位图是24位图的时候才能正确显示,当为8位灰度图的时候不能正确显示,不知道怎么解决?

void ShowBMP()
{
BITMAPFILEHEADER m_bmfh;//BMP文件头变量
BITMAPINFOHEADER m_bmih;//BMP文件信息变量
BYTE *m_pImgData=NULL;
CFile file;
CFileDialog dlg(TRUE);
if(dlg.DoModal()==IDCANCEL)
return;

file.Open(dlg.GetPathName(),CFile::modeRead);
file.Read(&m_bmfh,sizeof(m_bmfh));
file.Read(&m_bmih,sizeof(m_bmih));

m_pImgData=new BYTE[m_bmih.biSizeImage];
file.Seek(m_bmfh.bfOffBits,0);
file.Read(m_pImgData,m_bmih.biSizeImage);
file.Close();
CClientDC dc(this);
SetDIBitsToDevice(dc.m_hDC,
0,0,
m_bmih.biWidth,m_bmih.biHeight,
0,0,
0,m_bmih.biHeight,
m_pImgData,
(BITMAPINFO*)&m_bmih,
DIB_RGB_COLORS);
delete m_pImgData;
}
...全文
121 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 2009-03-14
  • 打赏
  • 举报
回复
你根本没考虑调色板,8位及以下的位图是依靠调色板的。
黎大 2009-03-14
  • 打赏
  • 举报
回复
参数设置问题么 ?

建议看看set的 具体解释

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧