MFC中怎样读取一个JPG文件或BMP位图文件

如题所述

第1个回答  2016-12-16



在MFC中如何读取并显示jpg文件

//picture.h
#pragma once
#include <atlbase.h>
class CPicture {
public:
    CPicture();
    ~CPicture();
    // Load frm various sosurces
    BOOL Load(LPCTSTR pszPathName);
    BOOL Render(CDC* pDC, CRect rc=CRect(0,0,0,0),
    LPCRECT prcMFBounds=NULL) const;
    CSize GetImageSize(CDC* pDC=NULL) const;
    operator IPicture*() { return m_spIPicture; }
    void GetHIMETRICSize(OLE_XSIZE_HIMETRIC& cx, OLE_YSIZE_HIMETRIC& cy) const {
        cx = cy = 0;
        const_cast<CPicture*>(this)->m_hr = m_spIPicture->get_Width(&cx);
        ASSERT(SUCCEEDED(m_hr));
        const_cast<CPicture*>(this)->m_hr = m_spIPicture->get_Height(&cy);
        ASSERT(SUCCEEDED(m_hr));
    }
    void Free() {
        if (m_spIPicture) { m_spIPicture.Release();}
    }

//picture.cpp
#include "stdafx.h"
#include "Picture.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CPicture::CPicture()
{}
CPicture::~CPicture()
{}

BOOL CPicture::Load(LPCTSTR pszPathName)
{
    CFile file;
    if (!file.Open(pszPathName,CFile::modeRead|CFile::shareDenyWrite))
        return FALSE;
    BOOL bRet = Load(file);
    file.Close();
    return bRet;
}

BOOL CPicture::Render(CDC* pDC, CRect rc, LPCRECT prcMFBounds) const
{
    ASSERT(pDC);
    if (rc.IsRectNull()) {
        CSize sz = GetImageSize(pDC);
        rc.right = sz.cx;
        rc.bottom = sz.cy;
    }
    long hmWidth,hmHeight; // HIMETRIC units
    GetHIMETRICSize(hmWidth, hmHeight);
    m_spIPicture->Render(*pDC, rc.left, rc.top, rc.Width(), rc.Height(),
        0, hmHeight, hmWidth, -hmHeight, prcMFBounds);
    return TRUE;
}

CSize CPicture::GetImageSize(CDC* pDC) const
{
    if (!m_spIPicture)
        return CSize(0,0);
    LONG hmWidth, hmHeight; // HIMETRIC units
    m_spIPicture->get_Width(&hmWidth);
    m_spIPicture->get_Height(&hmHeight);
    CSize sz(hmWidth,hmHeight);
    if (pDC==NULL) {
        CWindowDC dc(NULL);
        dc.HIMETRICtoDP(&sz); // convert to pixels
    } else {
    pDC->HIMETRICtoDP(&sz);
    }
    return sz;
}

//最后在CView类的OnDraw方法中加入调用:
void CShowImageView::OnDraw(CDC* pDC)
{
   CShowImageDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   CPicture* ppic = new CPicture();
   std::string filename("C:\\mypic.jpg");
   int slength = (int)filename.length() + 1;
   int len = MultiByteToWideChar(CP_ACP, 0, filename.c_str(), slength, 0, 0); 
   wchar_t* buf = new wchar_t[len];
   MultiByteToWideChar(CP_ACP, 0, filename.c_str(), slength, buf, len);
   std::wstring r(buf);
   delete[] buf;
   ppic->Load(r.c_str());
   ASSERT(ppic);
   if (*ppic) {
     CRect rc(0,0,500,500);
     ppic->Render(pDC,rc);
   }
 }
protected:
    CComQIPtr<IPicture>m_spIPicture;
    // ATL smart pointer to IPicture
    HRESULT m_hr;  // last error code
};

MFC中如何载入bmp和jpeg格式的图片,并作为文件背景
步骤一:导入bmp文件:第二步:设置为背景:① 添加OnCtlColor消息响应函数:② 添加响应代码:HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);\/\/ TODO: Change any attributes of the DC here static CBrush gBr;...

mfc怎样读入BMP文件
切换到resource视图,右键点击工程名,点击import--选择所有文件---选中添加的图片---import。然后,选中picture控件,右键属性,在Type里面选Bitmap,在Image里面选择刚刚添加的图片id,就行了

关于MFC读取JPG格式的图片的问题
有一定的参考 WIN32_FIND_DATA FFD从MSDN代码 _TCHAR findExpression [] = TEXT(“E:\\ \\下载\\ \\ A \\ \\ DSC205 \\ \\ *。JPG”); BR \/> HANDLE H找到= FindFirstFile(findExpression,FFD);(hFind! = INVALID_HANDLE_VALUE){ { _tprintf(TEXT(“%s的\\ n“),ffd.cFileName)...

如何在MFC窗口显示BMP和JPG图片
对话框添加Pic控件 类型选择bitmap 关联Control类型变量m_pic 菜单消息处理函数内部

mfc导入不了bmp图片
1、建一个单文档的MFC程序。2、插入->资源->Bitmap->导入。3、插入->资源->对话框->新建。4、找到图片控件。5、在对话框的空白处画一个矩形。6、右键->属性。7、双击对话空,建立一个对话空的类,取名(比如:Tupian)->确定。8、在resources中点开menu。9、增加一个菜单项,右键属性。10、...

mfc中图片控件如何显示图片
在资源视图里面加载图片(只能是bmp格式的图片),然后在图片控件属性设置里面有设置图片资源id的下拉框里面选择要显示的图片id即可,如果要显示其他图片格式,需要自己编码实现,这样就没有必要使用图片控件。

怎样在MFC中读取一幅图片并显示在对话框里面
对话框类加一个存图像路径的变量 用来选择和打开图像 处理图像的部分写在“开始”按键的响应函数里 关于显示:你一个MFC对话框程序想显示图像在那啊?如果只要直接画上去的话就重载OnPaint写代码

mfc 加载图片资源怎么弄?给个程序最好附上说明。
如果想把外部图片导入MFC资源库,可以在资源视图点右键,添加资源,选择插入,找到你的bmp文件,点确定,这样图片就进到资源列表了.如果想给让一个图片显示出来,可以使用兼容DC.写个例子给你 为准备要显示图片的窗口添加一个WM_ERASEBKGND消息,然后mfc自动帮你加上如下函数,在里面写上内容就行了,给...

怎样用MFC编程将BMP图像文件显示出来
代码 大概就是这样 有几个关键函数仔细一下,要是要完整代码呢留言 CDC memDC;CBitmap memBitmap,*pOldBitmap;CWindowDC dc(GetDesktopWindow());memDC.CreateCompatibleDC(&dc);int nWidth,nHeight;\/* nWidth=GetSystemMetrics(SM_CXSCREEN);nHeight=GetSystemMetrics(SM_CYSCREEN);*\/ CRect rect;Ge...

在VC6.0的MFC中,如何在对话框中实现打开图像(BMP),请各位帮帮忙...谢谢...
你需要找一些别人写好的CDib.h和CDib.cpp文件,才能方便地使用BMP图片。勿在浮沙筑高台,要先熟悉MFC和在C++处理图片的相关知识之后,才开始写软件。例如openCV就是一个非常好用图像处理方面的开源SDK开发包,如果你熟悉了openCV,对于你上面的问题,只需要添加很少的程序就可以实现了 ...

相似回答