⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plinergn.cpp

📁 一个很不错的求Voronoi线与最小凸壳的vc++源程序
💻 CPP
字号:
// PlineRgn.cpp: implementation of the CPlineRgn class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Voronoi.h"
#include "Pline.h"
#include "PlineRgn.h"
#include "VoronoiDoc.h"

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

extern CGraphPara *p_GraphPara;
extern void RPtoLP(double x,double y,int *X,int *Y);
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CPlineRgn::CPlineRgn()
{
  m_Number=0;
}

CPlineRgn::~CPlineRgn()
{
  
}
void CPlineRgn::Draw(CDC *pDC,int m_DrawMode,int m_DrawModel,short BackColor,int id)
{
	if(b_Delete)
		return;
	short LineType=0;
	short ColorPen=m_ColorPen;
	if(m_DrawMode==0)
		pDC->SetROP2(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 Numb=m_Number;
	m_PointList[Numb++]=m_PointList[0];
    POINT* ppoint=new POINT[Numb*4+1];
	CRgn rgn;
    for(int i=0;i<Numb;i++)
	{
		int X1,Y1;
		RPtoLP(m_PointList[i].x,m_PointList[i].y,&X1,&Y1);
		ppoint[i].x=X1;
		ppoint[i].y=Y1;
	}
	CPen pen(lt,1,p_GraphPara->GetColor(ColorPen));
	CPen* pOldPen=pDC->SelectObject(&pen);
	for(i=0;i<Numb-1;i++)
	{
		pDC->MoveTo(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,Numb);
			pDC->SelectObject(pOldBrush);
			pDC->SetROP2(R2_COPYPEN);
		}
	}
	else if(m_DrawModel==1)
	{
		rgn.CreatePolygonRgn(ppoint,Numb,1);
		pDC->InvertRgn(&rgn);
	}
	pDC->SelectObject(pOldPen);
	delete ppoint;
}
			                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
PointStruct* CPlineRgn::GetPointList()
{
    return m_PointList;
}

int CPlineRgn::GetPointNumber()
{
   return m_Number;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -