www.pudn.com > DrawVector.rar > Line.cpp
// Line.cpp: implementation of the CLine class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Draw.h"
#include "Line.h"
//#include "DrawDoc.h"
//#include "Data.h"
#include "math.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//extern CGraphPara *p_GraphPara;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//CLine::CLine()
//{
//}
extern BOOL IsRectCross(float minx,float miny,float maxx,float maxy);
void CLine::Draw(CDC* pDC,int m_DrawMode,int m_DrawModel,short BackColor)
{
int x1,y1,x2,y2;
if(b_Delete)
return ;
float minx,miny,maxx,maxy;
GetRect(&minx,&miny,&maxx,&maxy);//得到边界矩形
if(!IsRectCross(minx,miny,maxx,maxy))//如果边界矩形不与屏幕窗口相交
{
return;
}
short LineType=m_LineType;
short LineWide=max(1,DLtoVL(m_LineWide));
short ColorPen=m_ColorPen;
if(m_DrawModel==1)
{
if(m_LineType!=2)
LineType=2;
else
LineType++;
}
if(m_DrawModel==2)
{
ColorPen=BackColor;
}
CGraphPara m_GraphPara;
CGraphPara *p_GraphPara;
p_GraphPara=&m_GraphPara;
CPen pen(LineType,LineWide,p_GraphPara->GetColor(ColorPen));
CPen* pOldPen=pDC->SelectObject(&pen);
if(m_DrawMode==0)
{
pDC->SetROP2(R2_COPYPEN);
}
else if(m_DrawMode==1)
pDC->SetROP2(R2_NOT);
DPtoVP(m_X1,m_Y1,&x1,&y1);
DPtoVP(m_X2,m_Y2,&x2,&y2);
pDC->MoveTo(x1,y1);
pDC->MoveTo(x2,y2);
pDC->SelectObject(pOldPen);
}
void CLine::GetRect(float* minX,float* minY,float* maxX,float* maxY)
{
*minX=min(m_X1,m_X2);
*maxX=max(m_X1,m_X2);
*minY=min(m_Y1,m_Y2);
*minY=min(m_Y1,m_Y2);
}
void CLine::CalLong()
{
m_fLong=sqrt((m_X1-m_X2)*(m_X1-m_X2)+(m_Y1-m_Y2)*(m_Y1-m_Y2));
}
BOOL CLine::IsPoint(float x,float y,float j1,float blc)
{
float xx,x1,y1,x2,y2;
if(b_Delete)
return FALSE;
GetRect(&x1,&y1,&x2,&y2);
if(!(x>=x1&&x<=x2&&y>=y1&&y<=y2))
return FALSE;
xx=PointLine(x,y,m_X1,m_Y1,m_X2,m_Y2);
if(xxm_X1,&this->m_Y1);
RotatePoint(baseX,baseY,angle,&this->m_X2,&this->m_Y2);
}
CLine::~CLine()
{
}