?? ele.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 + -