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;
}