www.pudn.com > DrawVector.rar > PlineRgn.cpp


// PlineRgn.cpp: implementation of the CPlineRgn class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "Draw.h" 
#include "PlineRgn.h" 
#include "DrawDoc.h" 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char THIS_FILE[]=__FILE__; 
#define new DEBUG_NEW 
#endif 
 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
//CPlineRgn::CPlineRgn() 
//{ 
 
//} 
 
//CPlineRgn::~CPlineRgn(); 
extern float xMinScreen,yMinScreen,xMaxScreen,yMaxScreen; 
BOOL CPlineRgn::IsRectCross(float minx,float miny,float maxx,float maxy) 
{ 
	if(minx>xMaxScreen||maxxyMaxScreen||maxySetROP2(R2_COPYPEN); 
	else if(m_DrawMode==1) 
		pDC->SetROP2(R2_NOT); 
	short lt=0; 
	if(m_DrawModel==1) 
	{ 
		LineType=-1; 
		lt=2; 
	} 
	else if(m_DrawModel==2) 
		ColorPen=BackColor; 
	short Numbl=m_Numble; 
	m_PointList[Numbl++]=m_PointList[0]; 
	POINT* ppoint=new POINT[Numbl*4+1]; 
	CRgn rgn; 
	for(int i=0;iGetColor(ColorPen)); 
	CPen* pOldPen=pDC->SelectObject(&pen); 
	for( i=0;iMoveTo(ppoint[i]); 
		pDC->LineTo(ppoint[i+1]); 
	} 
	if(m_DrawModel==0||m_DrawModel==2) 
	{ 
		if(m_bFill) 
		{ 
			long lColor=p_GraphPara->GetColor(m_ColorBrush); 
			if(m_DrawModel==2) 
				lColor=p_GraphPara->GetColor(BackColor); 
			CBrush brush(lColor); 
			CBrush* pOldBrush=pDC->SelectObject(&brush); 
			if(this->m_bTransparent) 
				pDC->SetROP2(R2_NOP); 
			else 
				pDC->SetROP2(R2_COPYPEN); 
			pDC->Polygon(ppoint,Numbl); 
			pDC->SelectObject(pOldBrush); 
			pDC->SetROP2(R2_COPYPEN); 
		 
		} 
	} 
	else if(m_DrawModel==1) 
	{ 
		rgn.CreatePolygonRgn(ppoint,Numbl,1); 
		pDC->InvertRgn(&rgn); 
	} 
	pDC->SelectObject(pOldPen); 
	delete ppoint; 
} 
void CPlineRgn::CalArea() 
{ 
	float xx1,yy1,xx2,yy2; 
	GetRect(&xx1,&yy1,&xx2,&yy2); 
	m_fArea=0.0; 
	m_PointList[this->m_Numble]=m_PointList[0]; 
	for(int i=0;i=x1-j1&&x<=x2+j1&&y>=y1-j1&&y<=y2+j1)) 
		return FALSE; 
	if(PointRgn(x,y,m_Numble,m_PointList,blc)) 
		return TRUE; 
	return FALSE; 
} 
 
void CPlineRgn::Rotate(float baseX,float baseY,float angle) 
{ 
	CPline::Rotate(baseX,baseY,angle); 
} 
 
void CPlineRgn::Move(float x_Move,float y_Move) 
{ 
	CPline::Move(x_Move,y_Move); 
} 
BOOL CPlineRgn::IsFill() 
{ 
	return m_bFill; 
}