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

📄 graph.cpp

📁 与本人上次上传的类别一样
💻 CPP
字号:
// Graph.cpp: implementation of the CGraph class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "GA_TSP.h"
#include "Graph.h"
#include "Parameter.h"
#include <math.h>

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

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

CGraph::CGraph()
{

}

CGraph::~CGraph()
{

}

void CGraph::DrawCity(CDC *pDC)
{

	pDC->BitBlt(0,0,g_WindowsWidth,g_WindowsHeight,&mem,0,0,SRCCOPY);

}

void CGraph::DrawPath(vector <int> Cities,CDC *pDC)
{
	CPen pen;
	pen.CreatePen(PS_SOLID,0,RGB(94,106,85));
	pDC->SelectObject(&pen);
	
	pDC->MoveTo(m_CityPoint[Cities[0]].x, m_CityPoint[Cities[0]].y);

	for(int i = 0;i < Cities.size();i++)
	{
		pDC->LineTo(m_CityPoint[Cities[i]].x, m_CityPoint[Cities[i]].y);
	}

	pDC->LineTo(m_CityPoint[Cities[0]].x, m_CityPoint[Cities[0]].y);
}

void CGraph::init(CDC *pDC)
{
	mem.DeleteDC();

	CBitmap Bmp;
	mem.CreateCompatibleDC(pDC);
	Bmp.CreateCompatibleBitmap(pDC, g_WindowsWidth, g_WindowsHeight);
	mem.SelectObject(&Bmp);

	CRect r(0,0,g_WindowsWidth,g_WindowsHeight);
	CBrush Brush_Bak(RGB(255,255,255));
	CBrush *oldBrush=pDC->SelectObject(&Brush_Bak);
	mem.SelectObject(Brush_Bak);
	mem.FillRect(&r,&Brush_Bak);
	
	CPen pen;
	pen.CreatePen(PS_SOLID,1,RGB(10,118,15));
	mem.SelectObject(&pen);
	
	CBrush Brush_Bak2(RGB(113,249,114));
	mem.SelectObject(&Brush_Bak2);

	int x;
	int y;
	double radius;
	
	if(g_WindowsWidth < g_WindowsHeight)
	{
		radius = g_WindowsWidth * 0.4;
	}
	else
	{
		radius = g_WindowsHeight * 0.4;
	}

	double angle;
	for(int i = 0;i < g_NumCity;i++)
	{
		angle = i * 3.141592654 * 2 / g_NumCity;
		x = (int)(g_WindowsWidth/2 + radius * cos(angle));
		y = (int)(g_WindowsHeight/2 + radius * sin(angle));
		m_CityDrawPoint[i].x = x;
		m_CityDrawPoint[i].y = y;

		CRect rcBounds(x - g_CityRadius,y - g_CityRadius,x + g_CityRadius,y + g_CityRadius);
		mem.Ellipse(rcBounds);
	}

	for(i = 0;i < g_NumCity;i++)
	{
		m_CityPoint[i].x = m_CityDrawPoint[i].x;
		m_CityPoint[i].y = m_CityDrawPoint[i].y;
	}
}


void CGraph::init2(CDC *pDC)
{
	mem.DeleteDC();

	CBitmap Bmp;
	mem.CreateCompatibleDC(pDC);
	Bmp.CreateCompatibleBitmap(pDC, g_WindowsWidth, g_WindowsHeight);
	mem.SelectObject(&Bmp);

	CRect r(0,0,g_WindowsWidth,g_WindowsHeight);
	CBrush Brush_Bak(RGB(255,255,255));
	CBrush *oldBrush=pDC->SelectObject(&Brush_Bak);
	mem.SelectObject(Brush_Bak);
	mem.FillRect(&r,&Brush_Bak);
	
	CPen pen;
	pen.CreatePen(PS_SOLID,1,RGB(10,118,15));
	mem.SelectObject(&pen);
	
	CBrush Brush_Bak2(RGB(113,249,114));
	mem.SelectObject(&Brush_Bak2);

	int x;
	int y;

	for(int i = 0;i < g_numGen;i++)
	{

		x = m_CityPoint[i].x;
		y = m_CityPoint[i].y;

		CRect rcBounds(x - g_CityRadius,y - g_CityRadius,x + g_CityRadius,y + g_CityRadius);
		mem.Ellipse(rcBounds);
	}
}

⌨️ 快捷键说明

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