📄 previewdlg.cpp
字号:
// PreviewDlg.cpp : implementation file
//
#include "stdafx.h"
#include "ImageLAB.h"
#include "AllImage.h"
#include "PreviewDlg.h"
#include "CommonProc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPreviewDlg
IMPLEMENT_DYNAMIC(CPreviewDlg, CFileDialog)
CPreviewDlg::CPreviewDlg(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
SetTemplate(0,IDD_CUSTOM_FILEOPEN);
BigImage = false;
imgDepth = 24;
imgW = imgH = 0;
}
BEGIN_MESSAGE_MAP(CPreviewDlg, CFileDialog)
//{{AFX_MSG_MAP(CPreviewDlg)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CPreviewDlg::OnFileNameChange( )
{
ImageFileName = GetFileName();
imgW = imgH = 0;
if(IsExistFile(ImageFileName))
{
if(ImageFileName.Right(3) == "bmp" ||ImageFileName.Right(3) == "BMP")
{
Image.GetImageDimensions(ImageFileName, imgW, imgH , imgDepth);
}
else if(ImageFileName.Right(3) == "pbm" ||ImageFileName.Right(3) == "PBM")
{
Image.GetImageDimensions(ImageFileName, imgW, imgH , imgDepth);
}
else if(ImageFileName.Right(3) == "pgm" ||ImageFileName.Right(3) == "PGM")
{
Image.GetImageDimensions(ImageFileName, imgW, imgH , imgDepth);
}
else if(ImageFileName.Right(3) == "jpg" ||ImageFileName.Right(3) == "JPG")
{
JpegFile::GetJPGDimensions(ImageFileName, imgW, imgH, imgDepth);
}
else if(ImageFileName.Right(3) == "gif" ||ImageFileName.Right(3) == "GIF")
{
Image.GifImage.GIFGetDimensions(ImageFileName, &imgW, &imgH);
}
else if(ImageFileName.Right(3) == "img" ||ImageFileName.Right(3) == "IMG")
{
Image.GetImageDimensions(ImageFileName, imgW, imgH , imgDepth);
}
else if(ImageFileName.Right(3) == "pcx" ||ImageFileName.Right(3) == "PCX")
{
Image.GetImageDimensions(ImageFileName, imgW, imgH , imgDepth);
}
BigImage = !(imgW<1030 && imgH<1030);
if(!BigImage)
{
Image.ReadImageFromFile(ImageFileName);
}
DrawImage();
}
}
void CPreviewDlg::DrawImage( )
{
CStatic* pic = (CStatic*)GetDlgItem(IDC_IMAGE);
CClientDC dc(pic);
CRect rect,crect;
CString msg;
msg.Format("图像宽度: %3d (pixels)", imgW);
SetDlgItemText(IDC_IMAGEWIDTH,msg);
msg.Format("图像高度: %3d (pixels)", imgH);
SetDlgItemText(IDC_IMAGEHEIGHT,msg);
msg.Format("像素深度: %3d (bits)", imgDepth);
SetDlgItemText(IDC_IMAGEINFO1,msg);
msg.Format("图像大小: %3d (bytes)", imgW*imgH);
SetDlgItemText(IDC_IMAGEINFO3,msg);
if(!BigImage&&Image.m_lpDibArray!=NULL)
{
pic->GetWindowRect(&rect);
GetParent()->ScreenToClient(rect);
pic->GetClientRect(&crect);
pic->InvalidateRect(crect, FALSE);
int ClientWidth = int((double)crect.Height()*imgW/(double)imgH+0.5);
if(ClientWidth>(1.5*rect.Height())) ClientWidth = int(1.5*rect.Height());
pic->SetWindowPos(NULL,rect.left,rect.top,ClientWidth,rect.Height(),SWP_NOACTIVATE);
pic->GetClientRect(&crect);
//TRACE("%d %d %d %d\n",crect.left,crect.top,crect.right,crect.bottom);
Image.ShowCurrentImage(&dc,crect);
msg.Format("显示比例: %5.1f%%",Image.m_fScale*100);
SetDlgItemText(IDC_IMAGEINFO2,msg);
}
else
{
pic->GetWindowRect(&rect);
rect.top +=10;
dc.DrawText("图像太大了!!!", rect, DT_CENTER);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -