如何读取一幅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();
}
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();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
{
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;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询