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

📄 vcimageview.cpp

📁 CONAXCA的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//         VCIMAGE -- 演示程序
//   华东理工大学信息学院  陆宗骐 编制  
//            2003.07.15              

// VCImageView.cpp : implementation of the CVCImageView class
//

#include "stdafx.h"
#include "VCImage.h"

#include "VCImageDoc.h"
#include "VCImageView.h"

#include "CDib_VC.h"

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

/////////////////////////////////////////////////////////////////////////////
// CVCImageView

IMPLEMENT_DYNCREATE(CVCImageView, CScrollView)

BEGIN_MESSAGE_MAP(CVCImageView, CScrollView)
	//{{AFX_MSG_MAP(CVCImageView)
	ON_COMMAND(ID_FILE_REFRESH, OnFileRefresh)
	ON_COMMAND(ID_INVERT, OnInvert)
	ON_COMMAND(ID_COLORTOGRAY, OnColorToGray)
    ON_COMMAND(ID_FLIP_HORZONTAL,OnFlipHorzontal)
    ON_COMMAND(ID_FLIP_VERTICAL,OnFlipVertical)
    ON_COMMAND(ID_ROTATE_15,OnRotate15)
    ON_COMMAND(ID_ROTATE_30,OnRotate30)
    ON_COMMAND(ID_ROTATE_45,OnRotate45)
    ON_COMMAND(ID_ROTATE_60,OnRotate60)
    ON_COMMAND(ID_ROTATE_75,OnRotate75)
    ON_COMMAND(ID_ROTATE_90,OnRotate90)
    ON_COMMAND(ID_ROTATE_180,OnRotate180)
    ON_COMMAND(ID_ROTATE_270,OnRotate270)
    ON_COMMAND(ID_RED,OnRed)
    ON_COMMAND(ID_GREEN,OnGreen)
    ON_COMMAND(ID_BLUE,OnBlue)
    ON_COMMAND(ID_YELLOW,OnYellow)
    ON_COMMAND(ID_CYAN,OnCyan)
    ON_COMMAND(ID_MAGENTA,OnMagenta)
    ON_COMMAND(ID_ZOOMIN2,OnZoomIn2)
    ON_COMMAND(ID_ZOOMIN3,OnZoomIn3)
    ON_COMMAND(ID_ZOOMOUT2,OnZoomOut2)
    ON_COMMAND(ID_ZOOMOUT3,OnZoomOut3)
    ON_COMMAND(ID_SCALE60,OnScale60)
    ON_COMMAND(ID_SCALE80,OnScale80)
    ON_COMMAND(ID_SCALE120,OnScale120)
    ON_COMMAND(ID_SCALE150,OnScale150)
    ON_COMMAND(ID_SCALE180,OnScale180)
	ON_COMMAND(ID_CAPTURE, OnCapture)
	ON_COMMAND(ID_SINGLECAPTO, OnSingleCapto)

    ON_COMMAND(ID_RECTANGLE,Rectangle)
    ON_COMMAND(ID_SKETCH,Sketch)
    ON_COMMAND(ID_ONCUT,OnCut)
    ON_COMMAND(ID_ONMOVE,OnMove)

	ON_WM_SIZE()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_MOUSEMOVE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CVCImageView construction/destruction

CVCImageView::CVCImageView()
{
	// TODO: add construction code here
}

CVCImageView::~CVCImageView()
{
}

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

	return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CVCImageView drawing

void CVCImageView::OnDraw(CDC* pDC)
{
	CVCImageDoc* pDoc = GetDocument();
	pDoc->m_Process.Draw(pDC);
}

/////////////////////////////////////////////////////////////////////////////
// CVCImageView diagnostics

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CVCImageView message handlers

void CVCImageView::OnInitialUpdate()
{
	SIZE size={1500,1200};
	SetScrollSizes(MM_TEXT,size);
	CScrollView::OnInitialUpdate();
}

void CVCImageView::OnFileRefresh() 
{
	CVCImageDoc* pDoc = GetDocument();
	pDoc->m_Process.Refresh();
	Invalidate();
}

void CVCImageView::OnInvert() 
{
	CVCImageDoc* pDoc = GetDocument();
	pDoc->m_Process.Invert();
	Invalidate();
}

void CVCImageView::OnColorToGray() 
{
	CVCImageDoc* pDoc = GetDocument();
	pDoc->m_Process.ColorToGray();
	Invalidate();
}

void CVCImageView::OnFlipHorzontal() 
{
	CVCImageDoc* pDoc = GetDocument();
	pDoc->m_Process.FlipHorzontal();
	Invalidate();
}

void CVCImageView::OnFlipVertical() 
{
	CVCImageDoc* pDoc = GetDocument();
	pDoc->m_Process.FlipVertical();
	Invalidate();
}

void CVCImageView::OnRotate180() 
{
	CVCImageDoc* pDoc = GetDocument();
	pDoc->m_Process.Rotate180();
	Invalidate();
}

void CVCImageView::OnRotate90() 
{
	CVCImageDoc* pDoc = GetDocument();
	pDoc->m_Process.Rotate90();
	Invalidate();
}

void CVCImageView::OnRotate270() 
{
	CVCImageDoc* pDoc = GetDocument();
	pDoc->m_Process.Rotate270();
	Invalidate();
}

void CVCImageView::OnRotate15() 
{
	CVCImageDoc* pDoc = GetDocument();
 	pDoc->m_Process.Rotate15();
	Invalidate();
}

void CVCImageView::OnRotate30() 
{
	CVCImageDoc* pDoc = GetDocument();
 	pDoc->m_Process.Rotate30();
	Invalidate();
}

void CVCImageView::OnRotate45() 
{
	CVCImageDoc* pDoc = GetDocument();
 	pDoc->m_Process.Rotate45();
	Invalidate();
}

void CVCImageView::OnRotate60() 
{
	CVCImageDoc* pDoc = GetDocument();
	pDoc->m_Process.Rotate60();
	Invalidate();
}

void CVCImageView::OnRotate75() 
{
	CVCImageDoc* pDoc = GetDocument();
	pDoc->m_Process.Rotate75();
	Invalidate();
}

void CVCImageView::OnRed(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.Color(0);
   Invalidate();
}

void CVCImageView::OnGreen(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.Color(1);
   Invalidate();
}

void CVCImageView::OnBlue(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.Color(2);
   Invalidate();
}

void CVCImageView::OnYellow(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.Color(3);
   Invalidate();
}

void CVCImageView::OnCyan(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.Color(4);
   Invalidate();
}

void CVCImageView::OnMagenta(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.Color(5);
   Invalidate();
}

void CVCImageView::OnZoomIn2(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.ZoomIn(2);
   Invalidate();
}

void CVCImageView::OnZoomIn3(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.ZoomIn(3);
   Invalidate();
}

void CVCImageView::OnZoomOut2(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.ZoomOut(2);
   Invalidate();
}

void CVCImageView::OnZoomOut3(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.ZoomOut(3);
   Invalidate();
}

void CVCImageView::OnScale60(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.Scale(0.6);
   Invalidate();
}

void CVCImageView::OnScale80(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.Scale(0.8);
   Invalidate();
}

void CVCImageView::OnScale120(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.Scale(1.2);
   Invalidate();
}

void CVCImageView::OnScale150(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.Scale(1.5);
   Invalidate();
}

void CVCImageView::OnScale180(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.Scale(1.8);
   Invalidate();
}

void CVCImageView::OnCapture() 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.OkCapture(m_hWnd);
}

void CVCImageView::OnSingleCapto() 
{
   CVCImageDoc* pDoc = GetDocument();
   pDoc->m_Process.SingleCapto(m_hWnd);
   Invalidate();
}

//---------------------------------------------

BOOL CVCImageView::PointInDib(int x,int y)
{
   CVCImageDoc* pDoc = GetDocument();
   return(pDoc->m_Process.PointInDib(x,y));
}

void CVCImageView::Rectangle(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   if (pDoc->m_Process.GetPDib(0)==NULL)  return;
   pDoc->m_Process.Refresh();
   rect_n=0;
   area_n=0;
   area_flag=0;
   rect_flag=1;
   Invalidate();
}

void CVCImageView::Sketch(void) 
{
   CVCImageDoc* pDoc = GetDocument();
   if (pDoc->m_Process.GetPDib(0)==NULL)  return;
   pDoc->m_Process.Refresh();
   rect_n=0;
   area_n=0;
   rect_flag=0;
   area_flag=1;
   Invalidate();
}

void CVCImageView::OnCut(void) 
{
   int   i,j,k,s,bpp,maxn;
   CDIB  *pdib2,*pdib1;
   BYTE  buf2[8192],*cp,*p0,*p1;
   DWORD dd;
   int   max,r,g,b,gray;
 
   CVCImageDoc* pDoc = GetDocument();
   if (pDoc->m_Process.GetPDib(0)==NULL)  return;
   p0=pDoc->m_Process.GetPDib(0);
   p1=pDoc->m_Process.GetPDib(1);
   if (p1!=NULL) {
      pdib2= new CDIB(p1);
      bpp=pdib2->bpp;
      pdib1= new CDIB(p0);
      if (bpp==1) {

⌨️ 快捷键说明

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