如何在mfc里载入一个jpg图片
MFC载入图片的方式有很多种,我今天介绍一个比较实用的。我使用的开发环境是vs2013,MFC项目单文档模式。在视类View的函数OnDraw()里,添加代码。
OnDraw()函数是在窗口重新刷新的时候都会被执行一次的响应函数。我首先新建一个CImage 类的对象img,接着新建一个类CString 对象sPath,把图片的保存路径保存在里,然后把图像载入进img。这里要注意的是:路径的格式一定使用\\而不能使用\,否则程序运行的时候会找不到图片。程序实现如下:
CImage img;
CString sPath=_T("D:\\vs\\res\\timg.jpg");
img.Load(sPath);
我们可以采用画刷在视类设定的区域内刷出整个图片。因为画刷类CBrush提供了位图画刷的功能,所以我们先得把CImage 类的对象转化成CBrush类的对象。程序实现如下:
HBITMAP hbmp = img.Detach();//获取图片的句柄 放到HBITMAP类型的对象hbmp里
CBitmap bmp;
bmp.Attach(hbmp);
CBrush m_bgBrush;
m_bgBrush.CreatePatternBrush(&bmp);
在用画刷刷出图片之前我们最好测量一下获得的图片的大小。这样我们就可以在CDC类的对象cd上画出一个合适大小的区域用于显示这个图片。程序实现如下:
BITMAP bmp_t;
bmp.GetBitmap(&bmp_t); //获取位图信息
CPoint p1, p2;
p1.x = 0;
p1.y = 0;
p2.x = bmp_t.bmWidth;
p2.y = bmp_t.bmHeight;//得到图片的高度和宽度
CClientDC dc(this);//获取当前客户区类的对象
dc.FillRect(CRect(p1, p2), &m_bgBrush);//用指定的画刷去填充矩形区域
程序运行显示效果如下: