www.gusucode.com > VC++开发的电路板画图设计软件源代码源码程序 > VC++开发的电路板画图设计软件源代码源码程序\code\Voltage.cpp

    //Download by http://www.NewXing.com
// Voltage.cpp: implementation of the CVoltage class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Pointtest.h"
#include "Voltage.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CVoltage::CVoltage(int nType,CBaseList* pBaseList) : CBase(ID_VOLTAGE_METER,pBaseList)
{
	left = CPoint(0,0);
	right = CPoint(0,0);
	Content_Of_Ob = "电压表";
	AddString(ID_VOLTAGE_METER);
	Value = 1;
	MaxValue = 20;
}
CVoltage::CVoltage(CBase* pp1,CBase* pp2,CBaseList* pBaseList) : CBase(ID_VOLTAGE_METER,pBaseList)
{
	p1 = pp1;
	p2 = pp2;
	AddSon(p1);
	AddSon(p2);
	left = CPoint(0,0);
	right = CPoint(0,0);
	Content_Of_Ob = "电压表";
	AddString(ID_VOLTAGE_METER);
	Value = 1;
	MaxValue = 20;
}
CVoltage::~CVoltage()
{
}
void CVoltage::Draw(CDC* pDC)
{
	if(IsSelected()){
		CPen pen(PS_SOLID, 2,RED);
		CPen *Oldpen = pDC->SelectObject(&pen);
		pDC->SetBkMode(TRANSPARENT);
		pDC->Rectangle(GetGraphRect());
		pDC->Rectangle(GetRect(aa,CSize(32,16)));
		pDC->Ellipse(GetRect(left,CSize(6,6)));
		pDC->Ellipse(GetRect(right,CSize(6,6)));
		pDC->MoveTo(left);
		pDC->LineTo(p1->CenterPoint);
		pDC->MoveTo(right);
		pDC->LineTo(p2->CenterPoint);
		pDC->TextOut(bb.x,bb.y,"V");
		DrawSign(pDC,sign,18);

		pDC->SelectObject(Oldpen);
	}else{
		CPen pen(PS_SOLID, 2,BLACK);
		CPen *Oldpen = pDC->SelectObject(&pen);
		pDC->SetBkMode(TRANSPARENT);
		pDC->Rectangle(GetGraphRect());
		pDC->Rectangle(GetRect(aa,CSize(32,16)));
		pDC->Ellipse(GetRect(left,CSize(6,6)));
		pDC->Ellipse(GetRect(right,CSize(6,6)));
		pDC->MoveTo(left);
		pDC->LineTo(p1->CenterPoint);
		pDC->MoveTo(right);
		pDC->LineTo(p2->CenterPoint);
		pDC->TextOut(bb.x,bb.y,"V");
		DrawSign(pDC,sign,18);

		pDC->SelectObject(Oldpen);
	}
	TextOut(pDC);
}
void CVoltage::SetPoint(CPoint pp)
{
	aa = left = right = CenterPoint = pp;
	left.Offset(CSize(-10,10));
	right.Offset(CSize(10,10));
	p1->SetPoint(left);
	p2->SetPoint(right);
	p1->OffSet(CSize(0,15));
	p2->OffSet(CSize(0,15));
	aa.Offset(CSize(0,-4));
	bb = aa;
	bb.Offset(CSize(-4,5));
	sign = CenterPoint;
	sign.Offset(CSize(0,22));
	//RotateCell(TotalAngle);
}
void CVoltage::OffSet(CSize size)
{
	CenterPoint.Offset(size);
	left.Offset(size);
	right.Offset(size);
	p1->OffSet(size);
	p2->OffSet(size);
	aa.Offset(size);
	bb.Offset(size);
	sign.Offset(size);
}
CRect CVoltage::GetGraphRect()
{
	CPoint up_left,down_right;
	up_left = down_right = CenterPoint;
	up_left.Offset(-20,-15);
	down_right.Offset(20,15);
	return CRect(up_left,down_right);		
}
/*void CVoltage::RotateCell(double angle)
{
	left = Rotate(angle,left);
	right = Rotate(angle,right);
	p1->CenterPoint = Rotate(angle,p1->CenterPoint);
	p2->CenterPoint = Rotate(angle,p2->CenterPoint);
	aa = Rotate(angle,aa);
	bb = Rotate(angle,bb);
}*/