📄 configdlg.cpp
字号:
// ConfigDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Robocup.h"
#include "ConfigDlg.h"
#include "VideoDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CConfigDlg dialog
CConfigDlg::CConfigDlg(CWnd* pParent /*=NULL*/)
: CDialog(CConfigDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CConfigDlg)
m_bCheckGetFieldRect = FALSE;
m_bCheckDisplayField = FALSE;
m_RadioSelectObject = 1;
m_bCheckCapRect = FALSE;
m_rect_sample = FALSE;
m_red = 0;
m_green = 0;
m_blue = 0;
m_bMY_door = FALSE;
m_bTh_door = FALSE;
//}}AFX_DATA_INIT
isSample=false;
}
void CConfigDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CConfigDlg)
DDX_Control(pDX, IDC_rbsample, m_sample);
DDX_Control(pDX, IDC_GETRESULT_BUTTON, m_GetResultButton);
DDX_Control(pDX, IDC_MEANRGB_STATIC, m_MeanRGBInfo);
DDX_Control(pDX, IDC_COOR_STATIC, m_CoorInfo);
DDX_Control(pDX, IDC_COLORINFO_STATIC, m_ColorInfo);
DDX_Check(pDX, IDC_CHECK_FIELDRECT, m_bCheckGetFieldRect);
DDX_Check(pDX, IDC_CHECK_DISPLAYFIELD, m_bCheckDisplayField);
DDX_Radio(pDX, IDC_RADIO_MYTEAM, m_RadioSelectObject);
DDX_Check(pDX, IDC_CHECK_CAPRECT, m_bCheckCapRect);
DDX_Check(pDX, IDC_RECK_SAMPLE, m_rect_sample);
DDX_Check(pDX, IDC_MY_DOOR, m_bMY_door);
DDX_Check(pDX, IDC_TH_DOOR, m_bTh_door);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CConfigDlg, CDialog)
//{{AFX_MSG_MAP(CConfigDlg)
ON_BN_CLICKED(IDC_CHECK_FIELDRECT, OnCheckFieldrect)
ON_BN_CLICKED(IDC_CHECK_DISPLAYFIELD, OnCheckDisplayfield)
ON_BN_CLICKED(IDC_CHECK_TEST, OnCheckTest)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_DIA, OnCustomdrawSliderDia)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER_PERCENT, OnCustomdrawSliderPercent)
ON_BN_CLICKED(IDC_GETRESULT_BUTTON, OnGetresultButton)
ON_BN_CLICKED(ID_SAVE, OnSave)
ON_BN_CLICKED(ID_LOAD, OnLoad)
ON_BN_CLICKED(IDC_BUTTON_CLEARSAMPLE, OnButtonClearsample)
ON_BN_CLICKED(IDC_CHECK_CAPRECT, OnCheckCaprect)
ON_BN_CLICKED(IDC_rbsample, Onrbsample)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CConfigDlg message handlers
void CConfigDlg::OnCheckFieldrect()
{
UpdateData(TRUE);
}
void CConfigDlg::OnCheckDisplayfield()
{
UpdateData(TRUE);
}
void CConfigDlg::OnCheckTest()
{
UpdateData(TRUE);
}
void CConfigDlg::OnCheckCaprect()
{
UpdateData(TRUE);
}
void CConfigDlg::Init_Upper_Lower()
{
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 3; j++)
{
m_upper_MyTeam[i][j] = 0;
m_upper_TheirTeam[i][j] = 0;
m_lower_MyTeam[i][j] =255;
m_lower_TheirTeam[i][j] =255;
m_MyTeam[i][j] = 0.0;
m_TheirTeam[i][j] = 0.0;
}
}
for(i = 0; i < 3; i++)
{
m_upper_Ball[i] = 0;
m_upper_Field[i] = 0;
m_upper_MyTeamLable[i] = 0;
m_upper_TheirTeamLable[i] = 0;
m_lower_Ball[i] = 255;
m_lower_Field[i] = 255;
m_lower_MyTeamLable[i] =255;
m_lower_TheirTeamLable[i] = 255;
}
m_Ball[0] = 0.0;
m_Ball[1] = 0.0;
}
BOOL CConfigDlg::OnInitDialog()
{
CDialog::OnInitDialog();
Init_Upper_Lower();
m_bCheckCapRect=false;
m_bCheckGetFieldRect=true;
m_bCheckDisplayField=true;
UpdateData(false);
return TRUE;
}
void CConfigDlg::OnCustomdrawSliderDia(NMHDR* pNMHDR, LRESULT* pResult)
{
/* m_ObjectDia = m_SliderDia.GetPos();
CString str;
str.Format("物体直径:%f", m_ObjectDia);
m_DiaInfo.SetWindowText(str);
*pResult = 0;*/
}
void CConfigDlg::OnCustomdrawSliderPercent(NMHDR* pNMHDR, LRESULT* pResult)
{
/* m_ObjectPercent = 0.001 * m_SliderPercent.GetPos();
CString str;
str.Format("像素比例:%2.1f%%", 100 * m_ObjectPercent);
m_PercentInfo.SetWindowText(str);
*pResult = 0;*/
}
void CConfigDlg::OnGetresultButton()
{
UpdateData(true);
CString str;
switch(m_RadioSelectObject)
{
case 0://我队标志
str.Format("球 X:%.2f, Y:%.2f", g_Ball.m_vPos.x, g_Ball.m_vPos.y);
break;
case 1://我队队员1
str.Format("我队队员1 X:%.2f, Y:%.2f", m_pVideoDlg->My_CentreGravity[0][1], m_pVideoDlg->My_CentreGravity[0][0]);
break;
case 2://我队队员2
str.Format("我队队员2 X:%.2f, Y:%.2f", m_pVideoDlg->My_CentreGravity[1][1], m_pVideoDlg->My_CentreGravity[1][0]);
break;
case 3://我队队员3
str.Format("我队队员3 X:%.2f, Y:%.2f", m_pVideoDlg->My_CentreGravity[2][1], m_pVideoDlg->My_CentreGravity[2][0]);
break;
case 4://我队队员4
str.Format("我队队员4 X:%.2f, Y:%.2f", m_pVideoDlg->My_CentreGravity[3][1], m_pVideoDlg->My_CentreGravity[3][0]);
break;
case 5://我队队员5
str.Format("我队队员5 X:%.2f, Y:%.2f", m_pVideoDlg->My_CentreGravity[4][1], m_pVideoDlg->My_CentreGravity[4][0]);
break;
case 6://他队标志
str.Format("球 X:%.2f, Y:%.2f", g_Ball.m_vPos.x, g_Ball.m_vPos.y);
break;
case 7://他队队员1
str.Format("他队队员1 X:%.2f, Y:%.2f", g_TheirTeam[0].m_vPos.x, g_TheirTeam[0].m_vPos.y);
break;
case 8://他队队员2
str.Format("他队队员2 X:%.2f, Y:%.2f", g_TheirTeam[1].m_vPos.x, g_TheirTeam[1].m_vPos.y);
break;
case 9://他队队员3
str.Format("他队队员3 X:%.2f, Y:%.2f", g_TheirTeam[2].m_vPos.x, g_TheirTeam[2].m_vPos.y);
break;
case 10://他队队员4
str.Format("他队队员4 X:%.2f, Y:%.2f", g_TheirTeam[3].m_vPos.x, g_TheirTeam[3].m_vPos.y);
break;
case 11://他队队员5
str.Format("他队队员5 X:%.2f, Y:%.2f", g_TheirTeam[4].m_vPos.x, g_TheirTeam[4].m_vPos.y);
break;
case 12://球
str.Format("球 X:%.2f, Y:%.2f", g_Ball.m_vPos.x, g_Ball.m_vPos.y);
break;
case 13://场地
str.Format("球 X:%.2f, Y:%.2f", g_Ball.m_vPos.x, g_Ball.m_vPos.y);
break;
}
m_CoorInfo.SetWindowText(str);
}
void CConfigDlg::SetVideoDlg(CVideoDlg* pVideoDlg)
{
m_pVideoDlg = pVideoDlg;
}
void CConfigDlg::OnSave()
{
FILE* pFile;
pFile = fopen("sampling.txt", "w+");
if(!pFile)
{
MessageBox("sampling文件无法打开!");
return;
}
fprintf(pFile, "我队标志_red上限: %i\n", m_upper_MyTeamLable[2]);
fprintf(pFile, "我队标志_green上限: %i\n", m_upper_MyTeamLable[1]);
fprintf(pFile, "我队标志_RGBTotal上限: %i\n", m_upper_MyTeamLable[0]);
fprintf(pFile, "\n");
fprintf(pFile, "我队标志_red下限: %i\n", m_lower_MyTeamLable[2]);
fprintf(pFile, "我队标志_green下限: %i\n", m_lower_MyTeamLable[1]);
fprintf(pFile, "我队标志_RGBTotal下限: %i\n", m_lower_MyTeamLable[0]);
fprintf(pFile, "\n");
for(int i = 0; i < 5; i++)
{
fprintf(pFile, "我队队员%d_red上限: %i\n", i+1, m_upper_MyTeam[i][2]);
fprintf(pFile, "我队队员%d_green上限: %i\n", i+1, m_upper_MyTeam[i][1]);
fprintf(pFile, "我队队员%d_RGBTotal上限: %i\n", i+1, m_upper_MyTeam[i][0]);
fprintf(pFile, "\n");
fprintf(pFile, "我队队员%d_red下限: %i\n", i+1, m_lower_MyTeam[i][2]);
fprintf(pFile, "我队队员%d_green下限: %i\n", i+1, m_lower_MyTeam[i][1]);
fprintf(pFile, "我队队员%d_RGBTotal下限: %i\n", i+1, m_lower_MyTeam[i][0]);
fprintf(pFile, "\n");
}
fprintf(pFile, "\n");
fprintf(pFile, "他队标志_red上限: %i\n", m_upper_TheirTeamLable[2]);
fprintf(pFile, "他队标志_green上限: %i\n", m_upper_TheirTeamLable[1]);
fprintf(pFile, "他队标志_RGBTotal上限: %i\n", m_upper_TheirTeamLable[0]);
fprintf(pFile, "\n");
fprintf(pFile, "他队标志_red下限: %i\n", m_lower_TheirTeamLable[2]);
fprintf(pFile, "他队标志_green下限: %i\n", m_lower_TheirTeamLable[1]);
fprintf(pFile, "他队标志_RGBTotal下限: %i\n", m_lower_TheirTeamLable[0]);
fprintf(pFile, "\n");
for(i = 0; i < 5; i++)
{
fprintf(pFile, "他队队员%d_red上限: %i\n", i+1, m_upper_TheirTeam[i][2]);
fprintf(pFile, "他队队员%d_green上限: %i\n", i+1, m_upper_TheirTeam[i][1]);
fprintf(pFile, "他队队员%d_RGBTotal上限: %i\n", i+1, m_upper_TheirTeam[i][0]);
fprintf(pFile, "\n");
fprintf(pFile, "他队队员%d_red下限: %i\n", i+1, m_lower_TheirTeam[i][2]);
fprintf(pFile, "他队队员%d_green下限: %i\n", i+1, m_lower_TheirTeam[i][1]);
fprintf(pFile, "他队队员%d_RGBTotal下限: %i\n", i+1, m_lower_TheirTeam[i][0]);
fprintf(pFile, "\n");
}
fprintf(pFile, "\n");
fprintf(pFile, "球_red上限: %i\n", m_upper_Ball[2]);
fprintf(pFile, "球_green上限: %i\n", m_upper_Ball[1]);
fprintf(pFile, "球_RGBTotal上限: %i\n", m_upper_Ball[0]);
fprintf(pFile, "\n");
fprintf(pFile, "球_red下限: %i\n", m_lower_Ball[2]);
fprintf(pFile, "球_green下限: %i\n", m_lower_Ball[1]);
fprintf(pFile, "球_RGBTotal下限: %i\n", m_lower_Ball[0]);
fprintf(pFile, "\n");
fprintf(pFile, "场地_red上限: %i\n", m_upper_Field[2]);
fprintf(pFile, "场地_green上限: %i\n", m_upper_Field[1]);
fprintf(pFile, "场地_RGBTotal上限: %i\n", m_upper_Field[0]);
fprintf(pFile, "\n");
fprintf(pFile, "场地_red下限: %i\n", m_lower_Field[2]);
fprintf(pFile, "场地_green下限: %i\n", m_lower_Field[1]);
fprintf(pFile, "场地_RGBTotal下限: %i\n", m_lower_Field[0]);
fclose(pFile);
}
double CConfigDlg::ReadFile(FILE* pFile)
{
char *endptr;
char buffer[100];
CString str;
fscanf(pFile, "%s", buffer);
fscanf(pFile, "%s", buffer);
str = buffer;
return strtod( str, &endptr );
}
void CConfigDlg::OnLoad()
{
FILE* pFile;
pFile = fopen("sampling.txt", "r+");
if(!pFile)
{
MessageBox("sampling文件无法打开!");
return;
}
m_upper_MyTeamLable[2] = ReadFile(pFile);
m_upper_MyTeamLable[1] = ReadFile(pFile);
m_upper_MyTeamLable[0] = ReadFile(pFile);
m_lower_MyTeamLable[2] = ReadFile(pFile);
m_lower_MyTeamLable[1] = ReadFile(pFile);
m_lower_MyTeamLable[0] = ReadFile(pFile);
for(int i = 0; i < 5; i++)
{
m_upper_MyTeam[i][2] = ReadFile(pFile);
m_upper_MyTeam[i][1] = ReadFile(pFile);
m_upper_MyTeam[i][0] = ReadFile(pFile);
m_lower_MyTeam[i][2] = ReadFile(pFile);
m_lower_MyTeam[i][1] = ReadFile(pFile);
m_lower_MyTeam[i][0] = ReadFile(pFile);
}
m_upper_TheirTeamLable[2] = ReadFile(pFile);
m_upper_TheirTeamLable[1] = ReadFile(pFile);
m_upper_TheirTeamLable[0] = ReadFile(pFile);
m_lower_TheirTeamLable[2] = ReadFile(pFile);
m_lower_TheirTeamLable[1] = ReadFile(pFile);
m_lower_TheirTeamLable[0] = ReadFile(pFile);
for(i = 0; i < 5; i++)
{
m_upper_TheirTeam[i][2] = ReadFile(pFile);
m_upper_TheirTeam[i][1] = ReadFile(pFile);
m_upper_TheirTeam[i][0] = ReadFile(pFile);
m_lower_TheirTeam[i][2] = ReadFile(pFile);
m_lower_TheirTeam[i][1] = ReadFile(pFile);
m_lower_TheirTeam[i][0] = ReadFile(pFile);
}
m_upper_Ball[2] = ReadFile(pFile);
m_upper_Ball[1] = ReadFile(pFile);
m_upper_Ball[0] = ReadFile(pFile);
m_lower_Ball[2] = ReadFile(pFile);
m_lower_Ball[1] = ReadFile(pFile);
m_lower_Ball[0] = ReadFile(pFile);
m_upper_Field[2] = ReadFile(pFile);
m_upper_Field[1] = ReadFile(pFile);
m_upper_Field[0] = ReadFile(pFile);
m_lower_Field[2] = ReadFile(pFile);
m_lower_Field[1] = ReadFile(pFile);
m_lower_Field[0] = ReadFile(pFile);
fclose(pFile);
}
void CConfigDlg::OnButtonClearsample()
{
UpdateData(TRUE);
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 3; j++)
{
if(i+1 == m_RadioSelectObject)
{
m_upper_MyTeam[i][j] = 0;
m_lower_MyTeam[i][j] = 65535;
}
else if(7+i == m_RadioSelectObject)
{
m_upper_TheirTeam[i][j] =0;
m_lower_TheirTeam[i][j] = 65535;
}
}
}
for(i = 0; i < 3; i++)
{
if(12 == m_RadioSelectObject)
{//球
m_upper_Ball[i] = 0;
m_lower_Ball[i] = 65535;
}
else if(0 == m_RadioSelectObject)
{//我队标志
m_upper_MyTeamLable[i] = 0;
m_lower_MyTeamLable[i] = 65535;
}
else if(6 == m_RadioSelectObject)
{//他队标志
m_upper_TheirTeamLable[i] = 0;
m_lower_TheirTeamLable[i] = 65535;
}
else if(13 == m_RadioSelectObject)
{//场地
m_upper_Field[i] = 0;
m_lower_Field[i] = 65535;
}
}
}
void CConfigDlg::showcolour(int r, int g, int b)
{
CDC*pDC=GetDC();
CRect rc(CPoint(100,90),CPoint(120,110));
CBrush br(RGB(r,g,b));
pDC->SelectObject(br);
pDC->Rectangle(rc);
ReleaseDC(pDC);
}
void CConfigDlg::Onrbsample()
{
isSample=!isSample;
if (isSample)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -