如何读取一幅bmp图像,用mfc

我用类向导向cview类中的open函数添加代码,怎么不行呀?还需什么步骤吗?文件头什么的就不用说了,只需要在一个文档中打开一个bmp图像,谢谢了。最好能把每一步的操作写... 我用类向导向cview类中的open函数添加代码,怎么不行呀? 还需什么步骤吗? 文件头什么的就不用说了, 只需要在一个文档中打开一个bmp图像,谢谢了。 最好能把每一步的操作写一下... 展开
 我来答
匿名用户
2011-07-14
展开全部
CFile file;
CString cs;
cs=dlg.GetPathName();
file.Open(cs,CFile::modeRead);

Bitmapfileheader=(BITMAPFILEHEADER *)new BYTE[sizeof(BITMAPFILEHEADER)];
file.Read(Bitmapfileheader,sizeof(BITMAPFILEHEADER));
if((Bitmapfileheader->bfType)!=0x4d42)
{
MessageBox("Not bmp");
return;
}

number=(Bitmapfileheader->bfOffBits)-sizeof(BITMAPFILEHEADER);
Bitmapinfo=(BITMAPINFO *)new BYTE[number];
file.Read(Bitmapinfo,number);
number_image=(Bitmapinfo->bmiHeader.biWidth)*(Bitmapinfo->bmiHeader.biHeight)*4;
image=new BYTE[number_image];
file.Read(image,number_image);
Width=Bitmapinfo->bmiHeader.biWidth;
Height=Bitmapinfo->bmiHeader.biHeight;
bOpenImage=TRUE;
Invalidate();
file.Close();

OnPaint里
else{
if (bOpenImage)
{

CPaintDC dc(this);
::StretchDIBits((HDC)dc,
(800-Width)/2,
(600-Height)/2,
Width,
Height,
0,
0,
Width,
Height,
image,
Bitmapinfo,
DIB_RGB_COLORS,
SRCCOPY);
}
CDialog::OnPaint();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
07365311111
2011-07-08 · TA获得超过2890个赞
知道小有建树答主
回答量:705
采纳率:0%
帮助的人:877万
展开全部
BOOL CDib::LoadDibFile(CString lpszDibFile)
{
ASSERT(m_dwLength == 0L);
TRY
{
CFile file(lpszDibFile, CFile::modeRead|CFile::shareDenyNone);

if (! ReadDib(&file))
{
// CString str = lpszDibFile;
// str += " : 打开文件错误!\n文件打开失败!";
// AfxMessageBox(str);
return FALSE;
}
}
CATCH (CException, e)
{
// CString str = lpszDibFile;
// str += " : 装载文件出错!";
// AfxMessageBox(str);
return FALSE;
}
END_CATCH

return TRUE;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式