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

📄 liming02view.cpp

📁 自己编的程序大家下载一下很好的希望大家多多提出意见
💻 CPP
字号:
// liming02View.cpp : implementation of the CLiming02View class
//

#include "stdafx.h"
#include "liming02.h"
#include "liming02Doc.h"
#include "liming02View.h"
//添加相关的头文件
#include "SetColor.h"
#include "LIMING.H"
#include "MainFrm.h"



int way=-1;

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

/////////////////////////////////////////////////////////////////////////////
// CLiming02View

IMPLEMENT_DYNCREATE(CLiming02View, CScrollView)

BEGIN_MESSAGE_MAP(CLiming02View, CScrollView)
	//{{AFX_MSG_MAP(CLiming02View)
	ON_COMMAND(IDM_SetColor, OnSetColor)
	ON_COMMAND(IDM_MidLine, OnMidLine)
	ON_COMMAND(IDM_MidEllipse, OnMidEllipse)
	ON_COMMAND(IDM_MidCircle, OnMidCircle)
	ON_COMMAND(IDM_Bresenham, OnBresenham)
	ON_COMMAND(IDM_DDA, OnDda)
	ON_COMMAND(IDM_Bresenhamcircle, OnBresenhamcircle)
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	//}}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()

/////////////////////////////////////////////////////////////////////////////
// CLiming02View construction/destruction

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

}

CLiming02View::~CLiming02View()
{
}

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

	return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CLiming02View drawing

void CLiming02View::OnDraw(CDC* pDC)
{
	CLiming02Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

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

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

/////////////////////////////////////////////////////////////////////////////
// CLiming02View printing

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CLiming02View diagnostics

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CLiming02View message handlers

//颜色对话框的传值变化
void CLiming02View::OnSetColor() 
{
	// TODO: Add your command handler code here
	CSetColor dlg;
	if(dlg.DoModal ()==IDOK)
	{
		R=dlg.m_R ;
		G=dlg.m_G  ;
		B=dlg.m_B  ;
	}
				
}

void CLiming02View::OnMidLine() 
{
	// TODO: Add your command handler code here
	way=1;
	huatu();
}

void CLiming02View::OnMidEllipse() 
{
	// TODO: Add your command handler code here
	way=5;
	huatu();
}

void CLiming02View::OnMidCircle() 
{
	// TODO: Add your command handler code here
	way=3;
    huatu();
}

void CLiming02View::OnBresenham() 
{
	// TODO: Add your command handler code here
	way=2;
	huatu();
}

void CLiming02View::OnDda() 
{
	// TODO: Add your command handler code here
	way=0;
	huatu();
}

void CLiming02View::OnBresenhamcircle() 
{
	// TODO: Add your command handler code here
	way=4;
	huatu();
}

//绘制相关图形变化
void CLiming02View::huatu()
{
	CPoint point;
	CDC* pDC=GetDC();
	int r=abs(point.x-m_PointOrigin.x);
	int a=abs(point.x-m_PointOrigin.x)/2;
	int b=abs(point.y-m_PointOrigin.y)/2;
    CString str;
	switch (way)
	{
	case 0:
		{
			LIMING liming;
			liming.DDA(pDC,m_PointOrigin.x,m_PointOrigin.y,m_PointOld.x,m_PointOld.y,R,G,B);
			str="DDA算法画直线";
			pDC->TextOut(point.x,point.y,str);
			break;
		}
	case 1:
		{
			LIMING liming;
			liming.MID(pDC,m_PointOrigin.x,m_PointOrigin.y,m_PointOld.x,m_PointOld.y,R,G,B);
			str="DDA算法画直线";
			pDC->TextOut(point.x,point.y,str);
			break;
		}
	case 2:
		{
			LIMING liming;
			liming.Bresenham(pDC,m_PointOrigin.x,m_PointOrigin.y,m_PointOld.x,m_PointOld.y,R,G,B);
			str="Bresenham算法画直线";
			pDC->TextOut(point.x,point.y,str);
			break;
		}
	case 3:
		{
			LIMING liming;
			liming.MidCircle(pDC,m_PointOrigin.x,m_PointOrigin.y,r,R,G,B);
			str="中点法画圆";
			pDC->TextOut(point.x,point.y,str);
			break;
		}
	case 4:
		{	
			LIMING liming;
			liming.BresenhamCircle(pDC,m_PointOrigin.x,m_PointOrigin.y,r,R,G,B);
			str="Bresenham画圆";
			pDC->TextOut(point.x,point.y,str);
		}
	case 5:
		{
			LIMING liming;
			liming.Midellipse(pDC,a,b,m_PointOrigin.x,m_PointOrigin.y,R,G,B);
			str="中点法画椭圆";
			pDC->TextOut(point.x,point.y,str);
			break;
		}
	}
}
//设置相关状态栏的变化
void CLiming02View::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	
	CString str;
	CMainFrame *pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd ;
	CStatusBar *pStatus=&pFrame->m_wndStatusBar ;
	if(pStatus)
	{
		str.Format("X=%d,Y=%d",point.x,point.y);
		pStatus->SetPaneText(1,str);
		CScrollView::OnMouseMove(nFlags, point);
}

}

void CLiming02View::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	m_PointOld.x=point.x;
	m_PointOld.y=point.y;
	m_PointOrigin.x=point.x;
	m_PointOrigin.y=point.y;
	m_Dragging=1;
	CScrollView::OnLButtonDown(nFlags, point);
}

void CLiming02View::OnLButtonUp(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_Dragging)
	{
		m_Dragging=0;
		CDC *pDC=GetDC();
		int r=abs(point.x-m_PointOrigin.x);
		int a=abs(point.x-m_PointOrigin.x)/2;
		int b=abs(point.y-m_PointOrigin.y)/2;
		CString str;
		huatu();
		
	}

	CScrollView::OnLButtonUp(nFlags, point);
}

⌨️ 快捷键说明

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