📄 xbdlg.cpp
字号:
// XBDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Wonder.h"
#include "XBDlg.h"
#include "DataStruct.h"
#include "math.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CYjbkData YjbkData[];
extern int YjbkNum ;
extern int YjbkTotal ;
extern BYTE Data232[];
extern fdlx FDLH;
extern zslx ZXLH;
extern int Yjb_Num;
/////////////////////////////////////////////////////////////////////////////
// CXBDlg dialog
CXBDlg::CXBDlg(CWnd* pParent /*=NULL*/)
: CDialog(CXBDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CXBDlg)
m_mapdata = 1;
m_ui = 3;
//}}AFX_DATA_INIT
Select=_T("U1");
}
void CXBDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CXBDlg)
DDX_Control(pDX, IDC_XLT_DLG_CBX_MAP, m_c_mapdata);
DDX_Control(pDX, IDC_XLT_DLG_CBX_UI, m_c_ui);
DDX_CBIndex(pDX, IDC_XLT_DLG_CBX_MAP, m_mapdata);
DDX_CBIndex(pDX, IDC_XLT_DLG_CBX_UI, m_ui);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CXBDlg, CDialog)
//{{AFX_MSG_MAP(CXBDlg)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_XBDLG_BTN_EXIT, OnXbdlgBtnExit)
//ON_BN_CLICKED(IDC_XBDLG_BTN_U1, OnXbdlgBtnU1)
//ON_BN_CLICKED(IDC_XBDLG_BTN_U2, OnXbdlgBtnU2)
//ON_BN_CLICKED(IDC_XBDLG_BTN_U3, OnXbdlgBtnU3)
//ON_BN_CLICKED(IDC_XBDLG_BTN_I3, OnXbdlgBtnI3)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CXBDlg message handlers
void CXBDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
pDC=new CClientDC(this);
int b =m_c_mapdata.GetCurSel();
if(b==1)
{
CBrush brush(RGB(0,0,0));
CBrush*pOldBrush=(CBrush*)pDC->SelectObject(&brush);
CRect rect(2,2,236,Bottom_xb);
pDC->Rectangle(rect);
brush.DeleteObject();
pDC->SelectObject(pOldBrush);
////////////////////////////////
CPen pen;
CFont font;
pen.CreatePen(PS_SOLID,1,RGB(255,255,255));
pDC->SelectStockObject(NULL_BRUSH);
CPen*pOldPen=pDC->SelectObject(&pen);
//坐标轴
pDC->MoveTo(20,215);
pDC->LineTo(Bottom_xb,215);
pDC->MoveTo(20,215);
pDC->LineTo(20,5);
////纵坐标轴参数
for(int i=0;i<=10;i++)
{
CString s,pec;
pec=_T("%");
int j=i*10;
s.Format(_T("%d"),j);
s=s+pec;
pDC->MoveTo(20,215-i*20);
pDC->LineTo(23,215-i*20);
font.CreateFont (8,3,0,0,FW_NORMAL,FALSE,FALSE,0,NULL,NULL,CLIP_DEFAULT_PRECIS,NULL,NULL,_T("oo"));
pDC->SelectObject (&pen);
pDC->SelectObject (&font);
pDC->SetTextColor (RGB(0,0,255));
pDC->SetBkColor (RGB(0,0,0));
pDC->ExtTextOut(4,215-i*20,ETO_CLIPPED,NULL,s,NULL);
}
/////横坐标轴参数
for(i=1;i<=21;i++)
{
CString s;
s.Format(_T("%d"),i);
pDC->ExtTextOut(15+10*i,219,ETO_CLIPPED,NULL,s,NULL);
}
//纵坐标箭头
pDC->MoveTo(20,5);
pDC->LineTo(16,5+(float)(8*cos(rad(30))));
pDC->MoveTo(20,5);
pDC->LineTo(24,5+(float)(8*cos(rad(30))));
//横坐标箭头
pDC->MoveTo(235,215);
pDC->LineTo(235-(float)8*cos(rad(30)),219);
pDC->MoveTo(235,215);
pDC->LineTo(235-8*cos(rad(30)),211);
int a = m_c_ui.GetCurSel();
switch (a)
{
case 0:Select=_T("I1"); break;
case 1:Select=_T("I2"); break;
case 2:Select=_T("I3"); break;
case 3:Select=_T("U1"); break;
case 4:Select=_T("U2"); break;
case 5:Select=_T("U3"); break;
}
DrawXB(Select);
}
else
{
DrawData();
}
delete pDC;
// Do not call CDialog::OnPaint() for painting messages
}
void CXBDlg::OnXbdlgBtnExit()
{
// TODO: Add your control notification handler code here
CDialog::OnCancel();
}
void CXBDlg::DrawXB(CString s)
{
CPen xbpen;
CFont text;
int per=0;
text.CreateFont(30,15,0,0,FW_NORMAL,FALSE,FALSE,0,NULL,NULL,CLIP_DEFAULT_PRECIS,NULL,NULL,_T("oo"));
pDC->SelectObject (&text);
if(s==_T("U1"))
{
xbpen.CreatePen (PS_SOLID,5,RGB(255,255,0));
per=0;
pDC->SetTextColor (RGB(255,255,0));
}
if(s==_T("U2"))
{
xbpen.CreatePen (PS_SOLID,5,RGB(0,255,0));
per=264/6;
pDC->SetTextColor (RGB(0,255,0));
}
if(s==_T("U3"))
{
xbpen.CreatePen (PS_SOLID,5,RGB(255,0,0));
per=2*264/6;
pDC->SetTextColor (RGB(255,0,0));
}
if(s==_T("I1"))
{
xbpen.CreatePen (PS_SOLID,5,RGB(255,255,0));
per=3*264/6;
pDC->SetTextColor (RGB(255,255,0));
}
if(s==_T("I2"))
{
xbpen.CreatePen (PS_SOLID,5,RGB(0,255,0));
per=4*264/6;
pDC->SetTextColor (RGB(0,255,0));
}
if(s==_T("I3"))
{
xbpen.CreatePen (PS_SOLID,5,RGB(255,0,0));
per=5*264/6;
pDC->SetTextColor (RGB(255,0,0));
}
pDC->SetBkColor (RGB(0,0,0));
pDC->ExtTextOut(190,5,ETO_CLIPPED,NULL,s,NULL);
pDC->SelectObject(&xbpen);
int uiselect = m_c_ui.GetCurSel();
switch (uiselect)
{
case 0:uiselect=4;break;
case 1:uiselect=5;break;
case 2:uiselect=6;break;
case 3:uiselect=0;break;
case 4:uiselect=1;break;
case 5:uiselect=2;break;
}
int hei=215;
for(int i=1;i<=21;i++)
{
//YjbkData[YjbkNum].harm_per [per+i-1];等待处理
hei=215-(215-15)*(YjbkData[YjbkNum].harm_per [uiselect*24+i]/100.0f)*100.0f/100.0f;
pDC->MoveTo(17+i*10,215);
pDC->LineTo(17+i*10,hei);
}
}
void CXBDlg::DrawData()
{
CBrush brush(RGB(255,255,255));
CBrush*pOldBrush=(CBrush*)pDC->SelectObject(&brush);
CRect rect(2,2,236,Bottom_xb);
pDC->Rectangle(rect);
brush.DeleteObject();
pDC->SelectObject(pOldBrush);
int Height=(Bottom_xb-Top_xb)/12;
int Width=(Right_xb-Left_xb)/4;
int CiNum=0;
CString s,s2;
for(int j=0;j<12;j++)
{
for(int i=0;i<4;i++)
{
pDC->Rectangle (Left_xb+i*Width,Top_xb+j*Height,(i+1)*Width,(j+1)*Height);
}
}
int uiselect = m_c_ui.GetCurSel();
switch (uiselect)
{
case 0:uiselect=4;break;
case 1:uiselect=5;break;
case 2:uiselect=6;break;
case 3:uiselect=0;break;
case 4:uiselect=1;break;
case 5:uiselect=2;break;
}
pDC->ExtTextOut (Left_xb+10,Top_xb+3,ETO_CLIPPED,NULL,_T("失真度:"),NULL);
s2.Format(_T("%5.2f"),YjbkData[YjbkNum].harm_per[uiselect*24+ 23]);
pDC->ExtTextOut (Left_xb+Width+10,Top_xb+3,ETO_CLIPPED,NULL,s2,NULL);
for(int i=1;i<12;i++)
{
s.Format (_T("%d次:"),++CiNum);
pDC->ExtTextOut (Left_xb+10,Top_xb+3+i*Height,ETO_CLIPPED,NULL,s,NULL);
s2.Format(_T("%5.2f"),YjbkData[YjbkNum].harm_per[uiselect*24+CiNum]);
pDC->ExtTextOut (Left_xb+Width+10,Top_xb+3+i*Height,ETO_CLIPPED,NULL,s2,NULL);
}
for(i=1;i<11;i++)
{
s.Format (_T("%d次:"),++CiNum);
pDC->ExtTextOut (Left_xb+10+2*Width,Top_xb+3+i*Height,ETO_CLIPPED,NULL,s,NULL);
s2.Format(_T("%5.2f"),YjbkData[YjbkNum].harm_per[uiselect*24+CiNum]);
pDC->ExtTextOut (Left_xb+3*Width+10,Top_xb+3+i*Height,ETO_CLIPPED,NULL,s2,NULL);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -