📄 k_averageview.cpp
字号:
// K_averageView.cpp : implementation of the CK_averageView class
//
#include "stdafx.h"
#include "K_average.h"
#include "K_averageDoc.h"
#include "K_averageView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#define COLOR_R 15
#define COLOR_G 30
#define COLOR_B 45
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CK_averageView
IMPLEMENT_DYNCREATE(CK_averageView, CView)
BEGIN_MESSAGE_MAP(CK_averageView, CView)
//{{AFX_MSG_MAP(CK_averageView)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
//}}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()
/////////////////////////////////////////////////////////////////////////////
// CK_averageView construction/destruction
CK_averageView::CK_averageView()
{
// TODO: add construction code here
}
CK_averageView::~CK_averageView()
{
}
BOOL CK_averageView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CK_averageView drawing
void CK_averageView::OnDraw(CDC* pDC)
{
CK_averageDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDC->SetTextColor(RGB(120,0,200));
pDC->TextOut(80,10,"你可以导入实验样本数据或者用鼠标单击设置样本数据,");
pDC->TextOut(200,28,"具体请参考帮助文件!");
int x1,y1,x2,y2;
CBrush newbr,*oldbr;
CPen newp,*oldp;
// newbr.CreateSolidBrush(RGB(150,150,0));
// oldbr=pDC->SelectObject(&newbr);
newp.CreatePen(PS_SOLID,1,RGB(150,150,0));
oldp=pDC->SelectObject(&newp);
for (int i=0;i<pDoc->vec_feature_point.size();i++)
{
y1=pDoc->vec_feature_point[i].y-5;
y2=pDoc->vec_feature_point[i].y+5;
x1=pDoc->vec_feature_point[i].x-5;
x2=pDoc->vec_feature_point[i].x+5;
pDC->Ellipse(x1,y1,x2,y2);
}
pDC->SelectObject(oldp);newp.DeleteObject();
/* pDC->SelectObject(oldbr);newbr.DeleteObject();*/
newbr.CreateSolidBrush(RGB(155,125,50));
oldbr=pDC->SelectObject(&newbr);
newp.CreatePen(PS_SOLID,1,RGB(55,125,50));
oldp=pDC->SelectObject(&newp);
for (int j=0;j<pDoc->vec_point1.size();j++)
{
y1=pDoc->vec_point1[j].y-7;
y2=pDoc->vec_point1[j].y+7;
x1=pDoc->vec_point1[j].x-7;
x2=pDoc->vec_point1[j].x+7;
pDC->Ellipse(x1,y1,x2,y2);
}
pDC->SelectObject(oldp);newp.DeleteObject();
pDC->SelectObject(oldbr);newbr.DeleteObject();
newbr.CreateSolidBrush(RGB(0,0,255));
oldbr=pDC->SelectObject(&newbr);
newp.CreatePen(PS_SOLID,1,RGB(0,0,255));
oldp=pDC->SelectObject(&newp);
for (int k=0;k<pDoc->vec_point2.size();k++)
{
y1=pDoc->vec_point2[k].y-5;
y2=pDoc->vec_point2[k].y+5;
x1=pDoc->vec_point2[k].x-5;
x2=pDoc->vec_point2[k].x+5;
pDC->Rectangle(x1,y1,x2,y2);
}
pDC->SelectObject(oldp);newp.DeleteObject();
pDC->SelectObject(oldbr);newbr.DeleteObject();
newp.CreatePen(PS_SOLID,1,RGB(120,20,200));
oldp=pDC->SelectObject(&newp);
for (int m=0;m<pDoc->m_class_num;m++)
{
int m_r,m_g,m_b;
m_r=105+m*COLOR_R;
m_g=m*COLOR_G;
m_b=5+m*COLOR_B;
if (m_r>255) {m_r=255;}
if (m_g>255) {m_g=255;}
if (m_b>255) {m_b=255;}
for (int n=0;n<pDoc->vec_point_class[m].size();n++)
{
if (m<=3)
{
newbr.CreateSolidBrush(RGB(m_r,m_g+105,m_b+150));
oldbr=pDC->SelectObject(&newbr);
y1=pDoc->vec_point_class[m][n].y-5-2*m;
y2=pDoc->vec_point_class[m][n].y+5+2*m;
x1=pDoc->vec_point_class[m][n].x-5-2*m;
x2=pDoc->vec_point_class[m][n].x+5+2*m;
pDC->Rectangle(x1,y1,x2,y2);
pDC->SelectObject(oldbr);newbr.DeleteObject();
}
if (6>=m&&m>3)
{
y1=pDoc->vec_point_class[m][n].y-3*(m-2);
y2=pDoc->vec_point_class[m][n].y+3*(m-2);
x1=pDoc->vec_point_class[m][n].x-3*(m-2);
x2=pDoc->vec_point_class[m][n].x+3*(m-2);
pDC->Ellipse(x1,y1,x2,y2);
}
if (m>6&&m<=9)
{
newbr.CreateSolidBrush(RGB(m_r,m_g-100,m_b));
oldbr=pDC->SelectObject(&newbr);
y1=pDoc->vec_point_class[m][n].y-2*(m-4)-3;
y2=pDoc->vec_point_class[m][n].y+2*(m-4)+3;
x1=pDoc->vec_point_class[m][n].x-2*(m-4)-3;
x2=pDoc->vec_point_class[m][n].x+2*(m-4)+3;
pDC->Ellipse(x1,y1,x2,y2);
pDC->SelectObject(oldbr);newbr.DeleteObject();
}
if (m>9&&m<=13)
{
newbr.CreateSolidBrush(RGB(m_r-100,m_g-250,m_b-440));
oldbr=pDC->SelectObject(&newbr);
y1=pDoc->vec_point_class[m][n].y-2*(m-7)-3;
y2=pDoc->vec_point_class[m][n].y+2*(m-7)+3;
x1=pDoc->vec_point_class[m][n].x-2*(m-7)-3;
x2=pDoc->vec_point_class[m][n].x+2*(m-7)+3;
pDC->Ellipse(x1,y1,x2,y2);
pDC->SelectObject(oldbr);newbr.DeleteObject();
}
if (m>13)
{
y1=pDoc->vec_point_class[m][n].y-2*(m-12)-3;
y2=pDoc->vec_point_class[m][n].y+2*(m-12)+3;
x1=pDoc->vec_point_class[m][n].x-2*(m-12)-3;
x2=pDoc->vec_point_class[m][n].x+2*(m-12)+3;
pDC->Rectangle(x1,y1,x2,y2);
}
}
}
pDC->SelectObject(oldp);newp.DeleteObject();
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CK_averageView printing
BOOL CK_averageView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CK_averageView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CK_averageView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CK_averageView diagnostics
#ifdef _DEBUG
void CK_averageView::AssertValid() const
{
CView::AssertValid();
}
void CK_averageView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CK_averageDoc* CK_averageView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CK_averageDoc)));
return (CK_averageDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CK_averageView message handlers
void CK_averageView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CK_averageDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDoc->vec_feature_point.push_back(point);
CView::OnLButtonDown(nFlags, point);
}
void CK_averageView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
Invalidate(FALSE);
CView::OnLButtonUp(nFlags, point);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -