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

📄 ele.cpp

📁 学习 MFC 基本用法和功能 以及MFC工作原理
💻 CPP
字号:
// Ele.cpp : 实现文件
//

#include "stdafx.h"
#include "sketcher.h"
#include "Ele.h"
#include "math.h"

// CEle

CEle::CEle()
{
}

CEle::~CEle()
{
}


// CEle 成员函数

CLine::CLine(void)
{
}
CLine::CLine(CPoint Start,CPoint End,COLORREF aColor)
{
	m_StartPo = Start;
	m_EndPo = End;
	m_Color = aColor;
	m_Pen = 1;

	m_EnclosingRect = CRect(Start,End);
	m_EnclosingRect.NormalizeRect();
}
void CLine::Draw(CDC *pDC)
{
	CPen aPen;
	if(!aPen.CreatePen(PS_SOLID,m_Pen,m_Color))
	{
		AfxMessageBox(_T("Pen creation failed drawing aline"),MB_OK);
		AfxAbort();
	}

	CPen* pOldPen = pDC->SelectObject(&aPen);
	pDC->MoveTo(m_StartPo);
	pDC->LineTo(m_EndPo);

	pDC->SelectObject(pOldPen);
}

CRect CEle::GetBoundRect()
{
	CRect BoundingRect;
	BoundingRect = m_EnclosingRect;

	BoundingRect.InflateRect(m_Pen,m_Pen);
	return BoundingRect;
}
void CRec::Draw(CDC* pDC)
{
	CPen aPen;
	if(!aPen.CreatePen(PS_SOLID,m_Pen,m_Color))
	{
		AfxMessageBox(_T("Pen creation failed drawing aline"),MB_OK);
		AfxAbort();
	}

	CPen* pOldPen = pDC->SelectObject(&aPen);

	CBrush* pOldBrush = (CBrush*)pDC->SelectStockObject(NULL_BRUSH);

	pDC->Rectangle(m_EnclosingRect);
	pDC->SelectObject(pOldBrush);
	pDC->SelectObject(pOldPen);

}
CLine::~CLine(void)
{
}

CRec::CRec(CPoint Start,CPoint End,COLORREF aColor)
{
	m_Color = aColor;
	m_Pen = 1;
	m_EnclosingRect = CRect(Start,End);
	m_EnclosingRect.NormalizeRect();

}

CRec::~CRec(void)
{
}

CCir::CCir(void)
{
}

CCir::~CCir(void)
{
}

CCurve::CCurve(void)
{
}

CCurve::~CCurve(void)
{
}


CDian::CDian(void)
{
}

CDian::~CDian(void)
{
}

CTuo::CTuo(void)
{
}

CTuo::~CTuo(void)
{
}

CTuo::CTuo(CPoint Start, CPoint End, COLORREF aColor)
{
	long a = End.x-Start.x;
	long b = End.y - Start.y;
	m_EnclosingRect =CRect(Start.x-a,Start.y-b,Start.x+a,Start.y+b);
	m_Color = aColor;
	m_Pen = 1;
}

void CTuo::Draw(CDC *pDC)
{
	CPen aPen;
	if(!aPen.CreatePen(PS_SOLID,m_Pen,m_Color))
	{
		AfxMessageBox(_T("Pen creation failed drawing a circle"),MB_OK);
		AfxAbort();
	}
	CPen *pOldPen  = pDC->SelectObject(&aPen);
	CBrush* pOldBrush = (CBrush*)pDC->SelectStockObject(NULL_BRUSH);
	
	pDC->Ellipse(m_EnclosingRect);
	pDC->SelectObject(pOldPen);
	pDC->SelectObject(pOldBrush);
}
CDian::CDian(CPoint Start,CPoint Current,COLORREF aColor)
{
	m_DPoList.AddTail(Start);
m_DPoList.AddTail(Current);
	m_Color = aColor;
	m_Pen = 1;
}
void CDian::Draw(CDC *pDC)
{
	CPen aPen;
	if(!aPen.CreatePen(PS_SOLID,m_Pen,m_Color))
	{
		AfxMessageBox(_T("Pen creation failed drawing aline"),MB_OK);
		AfxAbort();
	}
	CPen* pOldPen = pDC->SelectObject(&aPen);
	POSITION aPo = m_DPoList.GetHeadPosition();
	if(aPo)
		pDC->MoveTo(m_DPoList.GetNext(aPo));

	while(aPo)
		pDC->SetPixel(m_DPoList.GetNext(aPo),m_Color);

	pDC->SelectObject(pOldPen);

}

void CCir::Draw(CDC *pDC)
{
	CPen aPen;
	if(!aPen.CreatePen(PS_SOLID,m_Pen,m_Color))
	{
		AfxMessageBox(_T("Pen creation failed drawing a circle"),MB_OK);
		AfxAbort();
	}
	CPen *pOldPen  = pDC->SelectObject(&aPen);
	CBrush* pOldBrush = (CBrush*)pDC->SelectStockObject(NULL_BRUSH);
	
	pDC->Ellipse(m_EnclosingRect);
	pDC->SelectObject(pOldPen);
	pDC->SelectObject(pOldBrush);

}
CCir::CCir(CPoint Start, CPoint End, COLORREF aColor)
{
	long Ra = static_cast<long>(sqrt(static_cast<double>((End.x-Start.x)*(End.x-Start.x)+(End.y-Start.y)*(End.y-Start.y))));

	m_EnclosingRect =CRect(Start.x-Ra,Start.y-Ra,Start.x+Ra,Start.y+Ra);
	m_Color = aColor;
	m_Pen = 1;
}

CCurve::CCurve(CPoint FPo, CPoint ScPo, COLORREF aColor)
{
	m_PoList.AddTail(FPo);
	m_PoList.AddTail(ScPo);
	m_Color = aColor;
	m_Pen = 1;

	m_EnclosingRect =CRect(FPo,ScPo);
	m_EnclosingRect.NormalizeRect();
}

void CCurve::AddSeg(CPoint &aPoint)
{
	m_PoList.AddTail(aPoint);
	m_EnclosingRect = CRect(min(aPoint.x,m_EnclosingRect.left),
							min(aPoint.y,m_EnclosingRect.top),
							max(aPoint.x,m_EnclosingRect.right),
							max(aPoint.y,m_EnclosingRect.bottom)
							);
}

void CCurve::Draw(CDC *pDC)
{
	CPen aPen;
		if(!aPen.CreatePen(PS_SOLID,m_Pen,m_Color))
	{
		AfxMessageBox(_T("Pen creation failed drawing a circle"),MB_OK);
		AfxAbort();
	}

		CPen* pOldPen = pDC->SelectObject(&aPen);

		POSITION aPosition  = m_PoList.GetHeadPosition();

		if(aPosition)
			pDC->MoveTo(m_PoList.GetNext(aPosition));
		while(aPosition)
			pDC->LineTo(m_PoList.GetNext(aPosition));

		pDC->SelectObject(pOldPen);
}

void CDian::AddSegDian(CPoint& aPoint)
{
	m_DPoList.AddTail(aPoint);
	m_EnclosingRect = CRect(min(aPoint.x,m_EnclosingRect.left),
							min(aPoint.y,m_EnclosingRect.top),
							max(aPoint.x,m_EnclosingRect.right),
							max(aPoint.y,m_EnclosingRect.bottom)
							);
}

⌨️ 快捷键说明

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