如何在mfc里载入一个jpg图片

如何在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);//用指定的画刷去填充矩形区域

程序运行显示效果如下:

如何在mfc里载入一个jpg图片_第1张图片

你可能感兴趣的:(MFC)