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

📄 tranview.cpp

📁 将JPEG图像解压为BMP图像。 内含图像处理的一些基本函数。
💻 CPP
字号:
// TranView.cpp : implementation of the CTranView class
//

#include "stdafx.h"
#include "Tran.h"

#include "TranDoc.h"
#include "TranView.h"
#include "MainFrm.h"
#include "ChildFrm.h"

#include "Dib.h"
#include "Jpeg.h"
#include "TranDlg.h"
#include "DispDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTranView

IMPLEMENT_DYNCREATE(CTranView, CScrollView)

BEGIN_MESSAGE_MAP(CTranView, CScrollView)
	//{{AFX_MSG_MAP(CTranView)
	ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
	ON_COMMAND(ID_TRAN_BMPJPG, OnTranBmpjpg)
	ON_COMMAND(ID_TRAN_OPENBMP, OnTranOpenbmp)
	ON_COMMAND(ID_TRAN_OPENJPG, OnTranOpenjpg)
	ON_COMMAND(ID_TRAN_SAVEASJPG, OnTranSaveasjpg)
	ON_COMMAND(ID_TRAN_SAVEASBMP, OnTranSaveasbmp)
	ON_COMMAND(ID_DISP_DLG, OnDispDlg)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTranView construction/destruction

CTranView::CTranView()
{
	// TODO: add construction code here

}

CTranView::~CTranView()
{
}

BOOL CTranView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CTranView drawing

void CTranView::OnDraw(CDC* pDC)
{
	CTranDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	BeginWaitCursor();
   	if (!m_dib.IsEmpty())
	{
		CSize sizeTotal;
		sizeTotal.cx = m_dib.GetWidth();
	    sizeTotal.cy = m_dib.GetHeight();
	    SetScrollSizes(MM_TEXT, sizeTotal);
		m_dib.Display(pDC, 0, 0);
	}
    EndWaitCursor();
}

void CTranView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();

	CSize sizeTotal;
	// TODO: calculate the total size of this view
	sizeTotal.cx = 0;
	sizeTotal.cy = 0;
	SetScrollSizes(MM_TEXT, sizeTotal);
}

/////////////////////////////////////////////////////////////////////////////
// CTranView printing

BOOL CTranView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CTranView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CTranView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CTranView diagnostics

#ifdef _DEBUG
void CTranView::AssertValid() const
{
	CScrollView::AssertValid();
}

void CTranView::Dump(CDumpContext& dc) const
{
	CScrollView::Dump(dc);
}

CTranDoc* CTranView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CTranDoc)));
	return (CTranDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CTranView message handlers

void CTranView::OnFileOpen() 
{
	// TODO: Add your command handler code here
	CString fileName;
    CString szOpenFilter = "图象文件|*.bmp; *.dib;  *.jpg; *.jpe; *.jpeg; |位图文件 (*.bmp;*.dib)|*.bmp; *.dib|JPEG文件 (*.jpg;*.jpe;*.jpeg)|*.jpg; *.jpe; *.jpeg|All Files (*.*)|*.*||";
	CFileDialog FileDlg(TRUE,NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szOpenFilter);
    
  
	if (FileDlg.DoModal() == IDOK)
	{  
		fileName=FileDlg.GetPathName();
	    char drive[_MAX_DRIVE];   
	    char dir[_MAX_DIR];
	    char fname[_MAX_FNAME];   
	    char ext[_MAX_EXT];
	    _splitpath((LPCSTR)fileName, drive, dir, fname, ext);

		CMainFrame *pMainFrame=(CMainFrame *)AfxGetMainWnd();
		CChildFrame *pChildFrame=(CChildFrame *)pMainFrame->MDIGetActive();
		CTranView *pTranView=(CTranView *)pChildFrame->GetActiveView();

		pChildFrame->SetWindowText(fileName);

	    CJpeg jpeg;

	   	if (! stricmp(ext, ".jpg") ||
			 ! stricmp(ext, ".jpe") ||
			 ! stricmp(ext, ".jpeg") )
        
		{
		  if (! jpeg.Load(fileName))
	      AfxMessageBox("false");

	      
          HDIB hDIB = CopyHandle(jpeg.m_dib.GetHandle());

		  m_dib.Attach(hDIB);
		}
		
	
       if (! stricmp(ext, ".bmp") ||
			 ! stricmp(ext, ".dib") )
			 	   
	   { if (!m_dib.Load(fileName))
	      AfxMessageBox("false");
	   
	     HDIB hDIB = CopyHandle(m_dib.GetHandle());
		 m_dib.Attach(hDIB);
	   	}
	
	}
   	
    Invalidate(TRUE);
	
}
/*
void CTranView::OnFileSaveAs() 
{
	// TODO: Add your command handler code here
	CString fileName;
   	CString szSaveFilter= "位图 (*.bmp;*.dib)|*.bmp; *.dib|JPEG文件 (*.jpg;*.jpe;*.jpeg)|*.jpg; *.jpe; *.jpeg|All Files (*.*)|*.*||";
	CFileDialog FileDlg(FALSE, "*.bmp", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szSaveFilter);

	
	if (FileDlg.DoModal() == IDOK)
	{
		fileName=FileDlg.GetPathName();
        char drive[_MAX_DRIVE];   
	    char dir[_MAX_DIR];
	    char fname[_MAX_FNAME];   
	    char ext[_MAX_EXT];
	    _splitpath((LPCSTR)fileName, drive, dir, fname, ext);

		CJpeg jpeg;
		
		if (! stricmp(ext, ".jpg") ||
			 ! stricmp(ext, ".jpe") ||
			 ! stricmp(ext, ".jpeg") )
        
		{	
            
			//将文件存储为JPEG格式
			jpeg.Save(fileName,&m_dib, TRUE, 75);

			
		}

        if (! stricmp(ext, ".bmp") ||
			 ! stricmp(ext, ".dib") )
		{  
			//将文件存储为BMP格式
			m_dib.Save(fileName);
		}

	}
	
}*/

void CTranView::OnTranBmpjpg() 
{
	// TODO: Add your command handler code here
	CTranDlg Trandlg;
	//DoModal()是类成员函数通过调用该函数将显示对话框
	Trandlg.DoModal();
	
}

void CTranView::OnTranOpenbmp() 
{
	// TODO: Add your command handler code here

	CString fileName;
    CString szOpenFilter = "位图文件 (*.bmp;*.dib)|*.bmp; *.dib|All Files (*.*)|*.*||";
	CFileDialog FileDlg(TRUE,NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szOpenFilter);
    
  
	if (FileDlg.DoModal() == IDOK)
	{  
		fileName=FileDlg.GetPathName();
	    char drive[_MAX_DRIVE];   
	    char dir[_MAX_DIR];
	    char fname[_MAX_FNAME];   
	    char ext[_MAX_EXT];
	    _splitpath((LPCSTR)fileName, drive, dir, fname, ext);
	
       if (! stricmp(ext, ".bmp") ||
			 ! stricmp(ext, ".dib") )
			 	   
	   { if (!m_dib.Load(fileName))
	      AfxMessageBox("false");
	   
	     HDIB hDIB = CopyHandle(m_dib.GetHandle());
		 m_dib.Attach(hDIB);
	   	}
	
	}
   	
    Invalidate(TRUE);
}

void CTranView::OnTranOpenjpg() 
{
	// TODO: Add your command handler code here
	CString fileName;
    CString szOpenFilter = "JPEG文件 (*.jpg;*.jpe;*.jpeg)|*.jpg;*.jpe;*.jpeg|All Files (*.*)|*.*||";
	CFileDialog FileDlg(TRUE,NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szOpenFilter);
    
  
	if (FileDlg.DoModal() == IDOK)
	{  
		fileName=FileDlg.GetPathName();
	    char drive[_MAX_DRIVE];   
	    char dir[_MAX_DIR];
	    char fname[_MAX_FNAME];   
	    char ext[_MAX_EXT];
	    _splitpath((LPCSTR)fileName, drive, dir, fname, ext);

	    CJpeg jpeg;

	   	if (! stricmp(ext, ".jpg") ||
			 ! stricmp(ext, ".jpe") ||
			 ! stricmp(ext, ".jpeg") )
        
		{
		  if (! jpeg.Load(fileName))
	      AfxMessageBox("false");

	      
          HDIB hDIB = CopyHandle(jpeg.m_dib.GetHandle());

		  m_dib.Attach(hDIB);
		}
			
	}
   	
    Invalidate(TRUE);
	
}

void CTranView::OnTranSaveasjpg() 
{
	// TODO: Add your command handler code here
	CString fileName;
   	CString szSaveFilter= "JPEG文件 (*.jpg;*.jpe;*.jpeg)|*.jpg; *.jpe; *.jpeg|All Files (*.*)|*.*||";
	CFileDialog FileDlg(FALSE, "*.bmp", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szSaveFilter);

	
	if (FileDlg.DoModal() == IDOK)
	{
		fileName=FileDlg.GetPathName();
        char drive[_MAX_DRIVE];   
	    char dir[_MAX_DIR];
	    char fname[_MAX_FNAME];   
	    char ext[_MAX_EXT];
	    _splitpath((LPCSTR)fileName, drive, dir, fname, ext);

		CJpeg jpeg;
		
		if (! stricmp(ext, ".jpg") ||
			 ! stricmp(ext, ".jpe") ||
			 ! stricmp(ext, ".jpeg") )
        
		{	
            
			//将文件存储为JPEG格式
			jpeg.Save(fileName,&m_dib, 75);

			
		}

	}
	
}

void CTranView::OnTranSaveasbmp() 
{
	// TODO: Add your command handler code here
	CString fileName;
   	CString szSaveFilter= "位图 (*.bmp;*.dib)|*.bmp; *.dib|All Files (*.*)|*.*||";
	CFileDialog FileDlg(FALSE, "*.bmp", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szSaveFilter);

	
	if (FileDlg.DoModal() == IDOK)
	{
		fileName=FileDlg.GetPathName();
        char drive[_MAX_DRIVE];   
	    char dir[_MAX_DIR];
	    char fname[_MAX_FNAME];   
	    char ext[_MAX_EXT];
	    _splitpath((LPCSTR)fileName, drive, dir, fname, ext);

//		CJpeg jpeg;
		
        if (! stricmp(ext, ".bmp") ||
			 ! stricmp(ext, ".dib") )
		{  
			//将文件存储为BMP格式
			m_dib.Save(fileName);
		}

	}
}
//新加
void CTranView::OnDispDlg() 
{
	// TODO: Add your command handler code here
	CDispDlg Dlg;
	Dlg.DoModal();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -