MFC应用---利用CxImage显示图片

MFC应用---利用CxImage显示图片

1.简单介绍

    用过MFC都应该知道,如果只用MFC自带的图片显示功能,只能显示BMP、PNG和Icon文件。

要显示JPG之类的图片变得很复杂。这里介绍一个库CxImage,利用这个库在MFC中显示各种类型的图片。

下面便是效果图。

MFC应用---利用CxImage显示图片_第1张图片

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功能是非常强大的,不仅仅是显示一张图片那么简单。笔者会专门写一篇来介绍这个库。

声明:本文章是笔者整理资料所得原创文章,如转载需注明出处,谢谢。

 

你可能感兴趣的:(MFC应用)