📄 optimizationview.cpp
字号:
// optimizationView.cpp : implementation of the COptimizationView class
//
#include "stdafx.h"
#include "optimization.h"
#include "optimizationDoc.h"
#include "optimizationView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// COptimizationView
IMPLEMENT_DYNCREATE(COptimizationView, CView)
BEGIN_MESSAGE_MAP(COptimizationView, CView)
//{{AFX_MSG_MAP(COptimizationView)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// COptimizationView construction/destruction
COptimizationView::COptimizationView()
{
// TODO: add construction code here
}
COptimizationView::~COptimizationView()
{
}
BOOL COptimizationView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// COptimizationView drawing
void COptimizationView::OnDraw(CDC* pDC)
{
COptimizationDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if (flag!=0)
{
CRect GraRect;
GraRect.left = 100;
GraRect.right = GraRect.left+600;
GraRect.top = 50;
GraRect.bottom = GraRect.top+400;
CPen *pFraPen = new CPen(PS_SOLID,2,RGB(0,0,255));
CPen *pOldPen = pDC ->SelectObject(pFraPen);
pDC ->Rectangle(GraRect);
CPen *pLinePen = new CPen(PS_DOT,1,RGB(0,0,255));
pDC ->SelectObject(pLinePen);
int i,k;
int distance=500;
for(i=1;i<10;i++)
{
pDC ->MoveTo(100,50+i*40);
pDC ->LineTo(700,50+i*40);
}
for(i=1;i<10;i++)
{
pDC ->MoveTo(100+60*i,50);
pDC ->LineTo(100+60*i,450);
}
double max = 0.0;
double min = 0.0;
for(i=0;i<distance;i++)
{
if(pDoc->output[i]>=max) max = pDoc->output[i];
if(pDoc->output[i]<=min) min = pDoc->output[i];
}
CFont MyFontPrint;
MyFontPrint.CreateFont( 15,
0,
0,
0,
200,
FALSE,
FALSE,
0,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH|FF_SWISS,
"宋体");
CFont *pOldFont = pDC ->SelectObject(&MyFontPrint);
pDC->TextOut(675,465," 时间(s)");
CString strx;
for(i=0;i<=9;i++)
{ strx.Format("%.2f",float(max-(max-min)/10.0*i));
pDC ->TextOut(75,45+i*40,strx);
}
CString stry;
for(i=0;i<=10;i++)
{ stry.Format("%.1f",float(distance/10*i));
pDC ->TextOut(90+60*i,450,stry);
}
double yscale;
yscale = double(400/(max-min));
double xscale;
xscale = double(600/float(distance));
CPen *pInputPen = new CPen(PS_SOLID,1,RGB(0,100,100));
pDC ->SelectObject(pInputPen);
int x,y;
x=100;
y=450-int(pDoc->input[0]*yscale);
pDC ->MoveTo(x,y);
for(k=1;k<distance;k++)
{ x=100+int(k*xscale);
y=450-int(pDoc->input[k]*yscale);
pDC ->LineTo(x,y);
}
pDC ->MoveTo(100,500);
pDC ->LineTo(150,500);
pDC->TextOut(150,500,"输入曲线");
CPen *pOutputPen = new CPen(PS_SOLID,1,RGB(255,0,0));
pDC ->SelectObject(pOutputPen);
x=100;
y=450-int(pDoc->output[0]*yscale);
pDC ->MoveTo(x,y);
for(i=1;i<distance;i++)
{ x=100+int(i*xscale);
y=450-int(pDoc->output[i]*yscale);
pDC ->LineTo(x,y);
}
pDC ->MoveTo(250,500);
pDC ->LineTo(300,500);
pDC->TextOut(300,500,"输出响应");
pDC ->SelectObject(pOldPen);
pDC ->SelectObject(pOldFont);
delete pOutputPen;
delete pInputPen;
delete pFraPen;
delete pLinePen;
}
}
/////////////////////////////////////////////////////////////////////////////
// COptimizationView printing
BOOL COptimizationView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void COptimizationView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void COptimizationView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// COptimizationView diagnostics
#ifdef _DEBUG
void COptimizationView::AssertValid() const
{
CView::AssertValid();
}
void COptimizationView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
COptimizationDoc* COptimizationView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(COptimizationDoc)));
return (COptimizationDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// COptimizationView message handlers
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -