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

📄 eastdrawview.cpp

📁 绘图软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
// EastDrawView.cpp : implementation of the CEastDrawView class
//

#include "stdafx.h"
#include "EastDraw.h"

#include "EastDrawDoc.h"
#include "EastDrawView.h"
#include "ReginSet.h"
#include "EditBox.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CEastDrawView

IMPLEMENT_DYNCREATE(CEastDrawView, CScrollView)

BEGIN_MESSAGE_MAP(CEastDrawView, CScrollView)
	//{{AFX_MSG_MAP(CEastDrawView)
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_MOUSEMOVE()
	ON_COMMAND(ID_BUTTON_DLine, OnBUTTONDLine)
	ON_COMMAND(ID_BUTTON32774_Move, OnBUTTON32774Move)
	ON_COMMAND(ID_BUTTON32775_CircumRotate, OnBUTTON32775CircumRotate)
	ON_COMMAND(ID_BUTTON32777_Curve, OnBUTTON32777Curve)
	ON_COMMAND(ID_BUTTON32776_Rectangle, OnBUTTON32776Rectangle)
	ON_COMMAND(ID_BUTTON32778_RoundRectangle, OnBUTTON32778RoundRectangle)
	ON_COMMAND(ID_BUTTON32779_Ellipse, OnBUTTON32779Ellipse)
	ON_COMMAND(ID_BUTTON32780_Round, OnBUTTON32780Round)
	ON_COMMAND(ID_BUTTON32791_Polygon, OnBUTTON32791Polygon)
	ON_WM_LBUTTONDBLCLK()
	ON_WM_SETFOCUS()
	ON_COMMAND(ID_MENUITEM32794_SetRegin, OnMENUITEM32794SetRegin)
	ON_COMMAND(ID_BUTTON_LiEllipse, OnBUTTONLiEllipse)
	ON_COMMAND(ID_BUTTON32800_RoundArc, OnBUTTON32800RoundArc)
	ON_COMMAND(ID_BUTTON32805_EllipseArc, OnBUTTON32805EllipseArc)
	ON_COMMAND(ID_BUTTON32807_PolyBezier, OnBUTTON32807PolyBezier)
	ON_COMMAND(ID_BUTTON32809_Text, OnBUTTON32809Text)
	ON_COMMAND(ID_CHAR_BOLD, OnCharBold)
	ON_COMMAND(ID_CHAR_ITALIC, OnCharItalic)
	ON_COMMAND(ID_CHAR_UNDERLINE, OnCharUnderline)
	ON_WM_CONTEXTMENU()
	ON_COMMAND(ID_MENUITEM_OK, OnMenuitemOk)
	ON_WM_SETCURSOR()
	ON_COMMAND(ID_CirCu, OnCirCu)
	ON_UPDATE_COMMAND_UI(ID_CirCu, OnUpdateCirCu)
	ON_WM_KEYUP()
	ON_COMMAND(ID_Delete, OnDelete)
	ON_COMMAND(ID_BUTTON32830_Lock, OnBUTTON32830Lock)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32830_Lock, OnUpdateBUTTON32830Lock)
	ON_UPDATE_COMMAND_UI(ID_BUTTON_DLine, OnUpdateBUTTONDLine)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32776_Rectangle, OnUpdateBUTTON32776Rectangle)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32778_RoundRectangle, OnUpdateBUTTON32778RoundRectangle)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32791_Polygon, OnUpdateBUTTON32791Polygon)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32779_Ellipse, OnUpdateBUTTON32779Ellipse)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32780_Round, OnUpdateBUTTON32780Round)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32777_Curve, OnUpdateBUTTON32777Curve)
	ON_UPDATE_COMMAND_UI(ID_BUTTON_LiEllipse, OnUpdateBUTTONLiEllipse)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32800_RoundArc, OnUpdateBUTTON32800RoundArc)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32805_EllipseArc, OnUpdateBUTTON32805EllipseArc)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32807_PolyBezier, OnUpdateBUTTON32807PolyBezier)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32809_Text, OnUpdateBUTTON32809Text)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32774_Move, OnUpdateBUTTON32774Move)
	ON_COMMAND(ID_BUTTON32845_Axis, OnBUTTON32845Axis)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32845_Axis, OnUpdateBUTTON32845Axis)
	ON_COMMAND(ID_BUTTON32850_ReDraw, OnBUTTON32850ReDraw)
	ON_COMMAND(ID_BUTTON32856_DONothing, OnBUTTON32856DONothing)
	ON_COMMAND(ID_BUTTON32858_OnDo, OnBUTTON32858OnDo)
	ON_COMMAND(ID_BUTTON32859_ReDo, OnBUTTON32859ReDo)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32858_OnDo, OnUpdateBUTTON32858OnDo)
	ON_UPDATE_COMMAND_UI(ID_BUTTON32859_ReDo, OnUpdateBUTTON32859ReDo)
	ON_COMMAND(ID_MouseCap_On, OnMouseCapOn)
	ON_UPDATE_COMMAND_UI(ID_MouseCap_On, OnUpdateMouseCapOn)
	ON_WM_KEYDOWN()
	//}}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()

/////////////////////////////////////////////////////////////////////////////
// CEastDrawView construction/destruction

#include "MainFrm.h"
#include "CCurve.h"
#include "CDLine.h"
#include "CRectangle.h"
#include "CRoundRectangle.h"
#include "CEllipse.h"
#include "CRound.h"
#include "CPolygon.h"
#include"CLiEllipse.h"
#include"CRoundArc.h"
#include"CEllipseArc.h"
#include "CPolyBezier.h"
//#include "TextEdit.h"
#include "CText.h"
CEastDrawView::CEastDrawView()
{
	// TODO: add construction code here
m_IsLastMove=false;
m_Rtimes=0;
m_Index=0;
m_pCurrentUnit=new CUnit;
m_HaveAxis=true;
m_Bitmap=NULL;
m_IsLocked=false;
CMainFrame*pMainFrame=STATIC_DOWNCAST(CMainFrame, AfxGetMainWnd());
m_DLineProperty=pMainFrame->m_DLineProperty;

m_IsMouseCap=true;
}

CEastDrawView::~CEastDrawView()
{
this->ReMoveTemp();
}

BOOL CEastDrawView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs
 
	return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CEastDrawView drawing

void CEastDrawView::OnDraw(CDC* pDC)
{
	CEastDrawDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	pDC->SetWindowOrg(m_CenterPoint);

    this->DrawAll(pDC);
	
	if(this->m_HaveAxis)
		this->DrawAxis(pDC);


	
}

void CEastDrawView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();
    CEastDrawDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	CSize sizeTotal;
	// TODO: calculate the total size of this view
	sizeTotal.cx = sizeTotal.cy =2000;
	SetScrollSizes(MM_TEXT,pDoc->m_TotalSize);
    m_CenterPoint=pDoc->m_CenterPoint; 
	//SetScrollSizes(MM_HIENGLISH, sizeTotal);
    m_bHaveFindFirst=FALSE;
	m_bHaveFindSecond=false;
	m_LBDownTimes=0;

    m_CurrentDrawTool=0;
	m_CurrentDrawStatus=0;

    ScrollToPosition(CPoint(900,600));
  
	AddTempFile();
	AutoSave();
  }

/////////////////////////////////////////////////////////////////////////////
// CEastDrawView printing


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

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

/////////////////////////////////////////////////////////////////////////////
// CEastDrawView diagnostics

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CEastDrawView message handlers

//******************************************************************************
//******************************************************************************
//**********void CEastDrawView::OnLButtonDown(UINT nFlags, CPoint point)********************************************************************
//******************************************************************************
//******************************************************************************

void CEastDrawView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	
      CEastDrawDoc*pDoc=this->GetDocument();  
	  CPoint Devpoint=point;
	  CClientDC dc(this);
	  this->OnPrepareDC(&dc);
      dc.SetWindowOrg(m_CenterPoint);
	  dc.DPtoLP(&point);
      dc.SetROP2(R2_NOTXORPEN);
	  this->ComputeMinandMaxPoint(point);
	  m_ChangeingPoint=point;
      this->SetMousePosText(point,Devpoint);
	  
    

	if(this->m_CurrentDrawStatus==Draw_Status)
	{
      if(this->m_CurrentDrawTool!=Polygon_Tool&&this->m_CurrentDrawTool!=PolyBezier_Tool)
	  {
	      if(this->m_CurrentDrawTool==EllipseArc_Tool)
		  {
		     if(m_LBDownTimes==3)
			 {
			   this->m_pCurrentUnit->DrawActive(&dc,point);
			   this->m_pCurrentUnit->DrawStatic(&dc);
               this->m_LBDownTimes=-1;
			   //if(m_DLineProperty->m_Mode->m_bMode)
			   //this->m_pCurrentUnit->DrawStatic(&dc);
			 }
		  
		  }
		  if(this->m_CurrentDrawTool==Ellipse_Tool||m_CurrentDrawTool==RoundArc_Tool)
		 {
	     	if(m_LBDownTimes==2)
			{
		       this->ComputeMinandMaxPoint(point);
			   this->m_pCurrentUnit->DrawActive(&dc,point);
			   this->m_pCurrentUnit->DrawStatic(&dc);
			   this->InvalidateMovingRect(m_pCurrentUnit);
				m_LBDownTimes=-1;
				//if(m_DLineProperty->m_Mode->m_bMode)
				//this->m_pCurrentUnit->DrawStatic(&dc);
			}
		 }
         if(this->m_CurrentDrawTool!=Text_Tool&&this->m_CurrentDrawTool!=Ellipse_Tool&&this->m_CurrentDrawTool!=RoundArc_Tool&&this->m_CurrentDrawTool!=EllipseArc_Tool)
		 { 
	       if(m_LBDownTimes==1)
		   {   
			   //this->ComputeMinandMaxPoint(point);
			   //this->InvalidateMovingRect(m_pCurrentUnit);
			   m_LBDownTimes=-1;
			   //if(m_DLineProperty->m_Mode->m_bMode)
			   //this->m_pCurrentUnit->DrawStatic(&dc);
		   }		 
		 }//*****if(this->m_CurrentDrawTool!=Ellipse_Tool)
	  }//*****if(this->m_CurrentDrawTool!=Polygon_Tool)
	}//*******if(this->m_CurrentDrawStatus==Draw_Status)
  if(this->m_CurrentDrawStatus==Select_Status)
   {
     m_LBDownTimes=0;
	 this->m_CurrentDrawTool=0;
   }

  
if(m_CurrentDrawStatus==Change_Status||m_CurrentDrawStatus==Drag_Status)
   {   
	   
		   if((m_CurrentDrawTool==Round_Tool||m_CurrentDrawTool==Ellipse_Tool)&&m_CurrentDrawStatus==Change_Status)
		   {
		  m_pCurrentUnit->ShowMovingLine(&dc,m_pCurrentUnit->m_CenterPoint,m_pCurrentUnit->m_FoundPoint);
		  m_pCurrentUnit->ShowMovingLine(&dc,m_pCurrentUnit->m_CenterPoint,point);
		   
		   }
		  
		   m_LBDownTimes=-1;
		   m_bHaveFindFirst=false;
		   m_CurrentDrawStatus=Select_Status;
		   m_pCurrentUnit->ShowSelectPoint(&dc);
		   m_pCurrentUnit->ShowMovingLine(&dc,m_pCurrentUnit->m_FoundPoint,point);
		   m_pCurrentUnit->DrawOldReferencePoint(&dc,m_pCurrentUnit->m_FoundPoint);
		   this->ComputeMinandMaxPoint(point);
		   this->InvalidateMovingRect(m_pCurrentUnit);
        if(m_CurrentDrawTool==RoundArc_Tool)
		{
		  m_pCurrentUnit->DrawActive(&dc,point);
		  m_pCurrentUnit->DrawStatic(&dc);
		}
	}
    
     if(m_LBDownTimes==-1||m_CurrentDrawTool==0||m_CurrentDrawTool==Text_Tool||m_CurrentDrawStatus==Select_Status)
	 {
		 if(m_IsMouseCap)
		 ::ReleaseCapture();
		 
	}
     if(m_LBDownTimes==-1)
	 {
		 ExchangeSave(); 
		 
	 }
      m_LBDownTimes++;
	  m_bHaveFindSecond=false;
	  m_bHaveFindFirst=false;
	  m_LastDownPoint=point;
	  L_iPointCount=-1;
      if(m_LBDownTimes==1&&m_CurrentDrawTool!=Text_Tool&&m_CurrentDrawStatus!=Select_Status)
	  { 
	  m_FirstPoint=point;
	  m_SecondPoint=point;
	  m_MinPoint=point;
	  this->m_MaxPoint=point;
	  if(m_IsMouseCap)
	  this->SetCapture();
	  }
	  this->ComputeMinandMaxPoint(point);
	  
if(m_DLineProperty->m_DLineDlg2->m_Draw_Status==Select_Color_Status)
  {
    
    m_DLineProperty->m_DLineDlg2->OnChange(dc.GetPixel(point));
    m_CurrentDrawStatus=Select_Color_Status;
	m_CurrentDrawTool=0;
  }	  
 
//******************************************************************************
//******************************************************************************

dc.SetROP2(R2_NOTXORPEN);


if((m_LBDownTimes==1)&&(m_CurrentDrawStatus==Select_Status))
{  

	for(int i=0;!m_bHaveFindSecond&&!m_bHaveFindFirst&&i<pDoc->m_PolyBezierArray.GetSize();i++)
	{
	 CPolyBezier*L_pPolyBezier=(CPolyBezier*)pDoc->m_PolyBezierArray.GetAt(i);
	 L_pPolyBezier->OnLButtonDown(&dc,this,point);
	}
    
	for(i=0;!m_bHaveFindSecond&&!m_bHaveFindFirst&&i<pDoc->m_TextArray.GetSize();i++)
	{
     CText*L_pText=(CText*)pDoc->m_TextArray.GetAt(i);
	 L_pText->OnLButtonDown(&dc,this,point);
	}

    for(i=0;!m_bHaveFindSecond&&!m_bHaveFindFirst&&i<pDoc->m_EllipseArcArray.GetSize();i++)
	{
	  CEllipseArc*L_pEllipseArc=(CEllipseArc*)pDoc->m_EllipseArcArray.GetAt(i);
	  L_pEllipseArc->OnLButtonDown(&dc,this,point);
	}//for(int i=0;!m_bHaveFindSecond&&pDoc->m_EllipseArcArray.GetSize();i++)
	
	for(i=0;!m_bHaveFindSecond&&!m_bHaveFindFirst&&i<pDoc->m_RoundRectangleArray.GetSize();i++)
    { 
     CRoundRectangle*L_pRoundRectangle=(CRoundRectangle*)pDoc->m_RoundRectangleArray.GetAt(i);
     L_pRoundRectangle->OnLButtonDown(&dc,this,point);   
	}//******for(int i=0;!l_bHaveFinf&&i<pDoc->m_RoundRectangleArray.GetSize();i++)  
 
   for(i=0;!m_bHaveFindSecond&&!m_bHaveFindFirst&&i<pDoc->m_RoundArcArray.GetSize();i++)
   {
    CRoundArc*L_pRoundArc=(CRoundArc*)pDoc->m_RoundArcArray.GetAt(i);
    L_pRoundArc->OnLButtonDown(&dc,this,point);
   }//******for(i=0;!m_bHaveFindSecond&&i<pDoc->m_RoundArcArray.GetSize();i++)
  
  for(i=0;!m_bHaveFindSecond&&!m_bHaveFindFirst&&i<pDoc->m_LiEllipseArray.GetSize();i++)
  {
   CLiEllipse*L_pLiEllipse=(CLiEllipse*)pDoc->m_LiEllipseArray.GetAt(i);
   L_pLiEllipse->OnLButtonDown(&dc,this,point);
  } //******for(i=0;!l_bHaveFind&&i<pDoc->m_LiEllipseArray.GetSize();i++)
  
for(i=0;!m_bHaveFindSecond&&!m_bHaveFindFirst&&i<pDoc->m_EllipseArray.GetSize();i++)
 {
   CEllipse*L_pEllipse=(CEllipse*)pDoc->m_EllipseArray.GetAt(i);
   L_pEllipse->OnLButtonDown(&dc,this,point);
 }//******for(i=0;!m_bHaveFindFirst&&i<pDoc->m_EllipseArray.GetSize();i++)
  


 for(i=0;!m_bHaveFindSecond&&!m_bHaveFindFirst&&i<pDoc->m_RoundArray.GetSize();i++)
 {
    CRound*L_pRound=(CRound*)pDoc->m_RoundArray.GetAt(i);
	L_pRound->OnLButtonDown(&dc,this,point);
 }//******for(i=0;!m_bHaveFindFirst&&i<pDoc->m_RoundArray.GetSize();i++)
 
 for(i=0;!m_bHaveFindSecond&&!m_bHaveFindFirst&&i<pDoc->m_DLineArray.GetSize();i++)
 { 

       CDLine*L_pDLine=(CDLine*)pDoc->m_DLineArray.GetAt(i);
       L_pDLine->OnLButtonDown(&dc,this,point);
 } //******for(int i=0;!m_bHaveFindFirst&&i<pDoc->m_DLineArray.GetSize();i++)

  
 for(i=0;!m_bHaveFindSecond&&!m_bHaveFindFirst&&i<pDoc->m_CurveArray.GetSize();i++)
  {
	CCurve*L_pCurve=(CCurve*)pDoc->m_CurveArray.GetAt(i);
	 L_pCurve->OnLButtonDown(&dc,this,point);

	
 }//*****for(i=0;!m_bHaveFindFirst&&i<pDoc->m_CurveArray.GetSize();i++)

 for(i=0;!m_bHaveFindSecond&&!m_bHaveFindFirst&&i<pDoc->m_RectangleArray.GetSize();i++)
 {
    CRectangle *L_pRectangle=(CRectangle*)pDoc->m_RectangleArray.GetAt(i);
	L_pRectangle->OnLButtonDown(&dc,this,point);
	
}//*****for(i=0;!m_bHaveFindFirst&&i<pDoc->m_RectangleArray.GetSize();i++)

for(i=0;!m_bHaveFindSecond&&!m_bHaveFindFirst&&i<pDoc->m_PolygonArray.GetSize();i++)
{
  CPolygon*L_pPolygon=(CPolygon*)pDoc->m_PolygonArray.GetAt(i);
  L_pPolygon->OnLButtonDown(&dc,this,point);

} //******for(i=0;!m_bHaveFindFirst&&i<pDoc->m_PolygonArray.GetSize();i++)

} //******if((m_CurrentDrawStatus==Select_Status))


 //***************************************************************************************
 //***************************************************************************************

if(m_CurrentDrawStatus==Draw_Status)
{    
	if(m_CurrentDrawTool==PolyBezier_Tool)
	{ 
	  if(this->m_LBDownTimes==1)
	  {   
		  m_pCurrentUnit=new CPolyBezier;
	      pDoc->m_PolyBezierArray.Add((CPolyBezier*)m_pCurrentUnit);
	  }
	  this->m_FirstPoint=this->m_SecondPoint=point;
	  m_pCurrentUnit->OnLButtonDown(&dc,this,point);
	}
    if(m_CurrentDrawTool==Text_Tool)
	{
	  if(this->m_LBDownTimes==1)
	  {   
		m_pCurrentUnit=new CText;

⌨️ 快捷键说明

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