⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 previewdlg.cpp

📁 医学图象处理系统
💻 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 + -