📄 graph.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 + -