MFC应用---利用CxImage显示图片
1.简单介绍
用过MFC都应该知道,如果只用MFC自带的图片显示功能,只能显示BMP、PNG和Icon文件。
要显示JPG之类的图片变得很复杂。这里介绍一个库CxImage,利用这个库在MFC中显示各种类型的图片。
下面便是效果图。
2.具体实现
1.下载CxImage库 此处下载
2.将CxImage库引入项目,在project->xxx Properties->ConfigurationProperties->Input->Additional Dependencies,将CxImage库的相对路径填写进去;
CxImage/cximage.lib
CxImage/jbig.lib
CxImage/Jpeg.lib
CxImage/libdcr.lib
CxImage/mng.lib
CxImage/Tiff.lib
CxImage/zlib.lib
CxImage/jasper.lib
CxImage/png.lib
记得#include "CxImage/ximage.h"
3.核心代码
要写代码很简单,感谢这个库吧。
只要将路径和图片的类型传进去就行了。
BOOLCImageShowPanel::SetImage(const CString &strPath,const CString & strType)
{
deletem_pXImage;
m_pXImage = newCxImage(strPath,CxImage::GetTypeIdFromName(strType));
returnm_pXImage != NULL;
}
显示的时候
void CImageShowPanel::OnPaint()
{
CPaintDC dc(this);
if(m_pXImage)
{
CRect rcClient;
GetClientRect(&rcClient);
//
m_pXImage->Draw(dc.GetSafeHdc(),rcClient);
}
}
这样就OK了
3.代码解释
主要讲一下CxImage的Draw
long Draw(HDChdc, const RECT& rect, RECT*pClipRect=NULL, bool bSmooth = false);
其中hdc便是我们的DC句柄,不必解释了;
接下来的rect便是图片显示的画布区域;
然后的pClipRect,便是CxImage会截取原图的一个区域,默认是截取整张图;
最后bSmooth从命名中就可以看出是控制画图时,是否是smooth,注意如果这个参数是true的话,可能会比较好资源了,如果你要显示很多并且图片都很大的情况下,建议false。
4.最后
这边使用的CxImage功能是非常强大的,不仅仅是显示一张图片那么简单。笔者会专门写一篇来介绍这个库。
声明:本文章是笔者整理资料所得原创文章,如转载需注明出处,谢谢。