📄 iimagedlg.cpp
字号:
// IImageDlg.cpp : implementation file
//
#include "stdafx.h"
#include "IImage.h"
#include "IImageDlg.h"
#include "initguid.h"
#include "imaging.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CIImageDlg dialog
CIImageDlg::CIImageDlg(CWnd* pParent /*=NULL*/)
: CDialog(CIImageDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CIImageDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CIImageDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CIImageDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CIImageDlg, CDialog)
//{{AFX_MSG_MAP(CIImageDlg)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CIImageDlg message handlers
BOOL CIImageDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CenterWindow(GetDesktopWindow()); // center to the hpc screen
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CIImageDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CString defFilter("选中其中一个文件|*.bmp;*.jpg;*.gif;*.png");
CFileDialog dlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT,defFilter);
if(dlg.DoModal()==IDOK){
PathName=dlg.GetPathName();
}
}
void CIImageDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CRect rcWnd;
GetWindowRect(&rcWnd);
// TODO: Add your message handler code here
IImage * m_pImage;
IImage * m_pThum;
IImagingFactory * m_pImagingFactory;
ImageInfo IimageInfo;
HBITMAP hBitmap;
HDC hdcMem;
HGDIOBJ hOldSel;
HRESULT hr;
//COM初始化
if (FAILED(hr = CoInitializeEx(NULL, COINIT_MULTITHREADED)))
{
goto END;
}
//创建COM实例
if(FAILED(hr = CoCreateInstance(CLSID_ImagingFactory,NULL,CLSCTX_INPROC_SERVER,IID_IImagingFactory,(void**) &m_pImagingFactory)))
{
goto END;
}
if(PathName==L"")return;
//从文件中创建图片
if(FAILED(hr = m_pImagingFactory->CreateImageFromFile(PathName, &m_pImage)))
{
goto END;
}
//绘制图片
//获取图片属性
m_pImage->GetImageInfo(&IimageInfo);
//创建一个内存DC,用来存储图片数据
hBitmap = CreateCompatibleBitmap(dc,IimageInfo.Width,IimageInfo.Height);
hdcMem = CreateCompatibleDC(dc);
hOldSel = SelectObject(hdcMem,hBitmap);
/*
m_pImage->GetThumbnail(100,100,&m_pThum);//这个用来显示缩略图
if(FAILED(hr = m_pThum->Draw(dc,CRect(0,0,480,272),NULL)))
{
goto END;
}
*/
if(FAILED(hr = m_pImage->Draw(dc,&rcWnd,NULL))) //原图
{
goto END;
}
END:
//释放资源
if(m_pImage != NULL)
{
m_pImage->Release();
m_pImage = NULL;
}
if(m_pImagingFactory != NULL)
{
m_pImagingFactory->Release();
m_pImagingFactory = NULL;
}
CoUninitialize();
// Do not call CDialog::OnPaint() for painting messages
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -