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

📄 contourobj.cpp

📁 二维规则网格数据的等值线追踪
💻 CPP
字号:
// ContourObj.cpp: implementation of the CContourObj class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ContourGenerator.h"
#include "ContourObj.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CContourObj::CContourObj(CCurve*  pCoord, float value)
{
	ASSERT( pCoord != NULL );
	m_pCoord = pCoord;
	m_Value = value;

	//m_FillColor = RGB(255,0,0);
	m_LineColor = RGB(0,0,0);

}

CContourObj::~CContourObj()
{
	//不要在这里delete m_pCoord;
	TRACE0("CContourObj::~CContourObj()\n");
}


void CContourObj::LookUpColor(const CColorLookUpTable& clrTbl)
{//在颜色表中查找m_Value对应的颜色值
	m_LineColor = clrTbl.LookUpColor(m_Value);
}


void CContourObj::Draw(CDC* pDC, const CColorLookUpTable& clrTbl,
					   float scaleRatio, float moveDeltX, float moveDeltY)
{//把等值线区域居中显示在rt中

    //1.在绘制之前先查找好颜色
	LookUpColor(clrTbl);

	//2.绘制等值线
	DrawContours(pDC,scaleRatio, moveDeltX, moveDeltY);
		
}



void CContourObj::DrawContours(CDC* pDC, float scaleRatio, float moveDeltX, float moveDeltY)
{
	ASSERT( m_pCoord!=NULL );
	
	int nSize = m_pCoord->GetSize();
	ASSERT(nSize>=2); 

	CPen pen(PS_SOLID,1,m_LineColor);
	CPen *pOldPen=pDC->SelectObject(&pen);
	
	

	pDC->MoveTo(int(m_pCoord->GetAt(0).x/scaleRatio + moveDeltX),
		        int(m_pCoord->GetAt(0).y/scaleRatio + moveDeltY));

	for(int i=1;i<nSize;i++)
	{//坐标映射变换(先比例变换再平移)

		pDC->LineTo(int(m_pCoord->GetAt(i).x/scaleRatio+moveDeltX),
			        int(m_pCoord->GetAt(i).y/scaleRatio+moveDeltY));
	}
	
	

	pDC->SelectObject(pOldPen);


}










































⌨️ 快捷键说明

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