MFC中JPG图片显示

来源:互联网 发布:成都青年旅舍 知乎 编辑:程序博客网 时间:2024/06/11 22:39

介绍:

由于项目需要,在MFC窗口中显示一张JPG图片。然而由于图片过大,使得很多方法都无法完整显示图片。查了很多方法,最终使用CImage的图片显示,比较简单。

Cimage类显示jpg图片
 
          CDC* pDC = m_picture.GetDC();  CRect zcRect;  m_picture.GetClientRect(&zcRect);  CImage img;  img.Load(filename);  img.Draw(m_picture.GetDC()->m_hDC,zcRect.left,zcRect.top,zcRect.Width(),zcRect.Height());

在这里的m_picture是一个静态文本框指针。图片显示在该静态文本框中。filename为图片的文件路径。
最终显示的效果对图片可能有拉伸的效果,由于不是等比例缩放。但总的来说还是不错的,相比于其他的很多方法简单了不少。最终结果如下




使用BUTTON控件进行图片显示


参考:http://blog.csdn.net/ixzf2009/article/details/6564456
其中主要思想是参考这里,由于实际中需要对显示jpg图片,因此对其中的CBUTTONPIC类进行部分修改,主要如下:
1.修改load图片的方式,使得能够直接从文件中载入图片
2.修改load图片的格式,使得能够支持jpg图片的载入。
主要如下:
1.修改资源类型,将UINT修改为CString,用来存放图片文件路径。
2.添加LoadJpg函数,用来载入jpg图片。
void CButtonPic::LoadJpg(CBitmap &mBitmap,CString path){    CImage pic;    pic.Load(path);    CDC *pDC = GetDC();    CDC memDC;    memDC.CreateCompatibleDC(pDC);mBitmap.CreateCompatibleBitmap(pDC,pic.GetWidth(),pic.GetHeight());    CBitmap *OldBitmap =memDC.SelectObject(&mBitmap);    pic.Draw(memDC.m_hDC,0,0);     memDC.SelectObject(OldBitmap);    DeleteDC(memDC);    OldBitmap = NULL;}
结果如下

修改过的已经上传资源
http://download.csdn.net/detail/u010327085/8916409


0 0