📄 appleview.cpp
字号:
// AppleView.cpp : CAppleView 类的实现
//
#include "stdafx.h"
#include "Apple.h"
#include "AppleDoc.h"
#include "AppleView.h"
#include ".\appleview.h"
#include "ChooseView.h"
#include "math.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#define ARROWLEN 15
#define ARROWCOEF 50
#define ARROWANGLE (3.1415926536 / 8)
//using namespace std;
// CAppleView
IMPLEMENT_DYNCREATE(CAppleView, CView)
BEGIN_MESSAGE_MAP(CAppleView, CView)
// 标准打印命令
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
//ON_REGISTERED_MESSAGE(WM_MY_MESSAGE,OnMyMessage)
ON_WM_LBUTTONDBLCLK()
ON_WM_ERASEBKGND()
END_MESSAGE_MAP()
// CAppleView 构造/析构
CAppleView::CAppleView()
{
// TODO: 在此处添加构造代码
}
CAppleView::~CAppleView()
{
}
//LRESULT CAppleView::OnMyMessage(WPARAM wParam, LPARAM lParam)
//{
// MessageBox("全局");
// CRect reccount,myrect;
// myrect.SetRect(0,320,600,800);
// InvalidateRect(&myrect,true);
//
// return 0;
//}
BOOL CAppleView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
// 样式
return CView::PreCreateWindow(cs);
}
// CAppleView 绘制
void CAppleView::OnDraw(CDC* pDC)
{
CAppleDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
int count;
CString s,sw,str,strweight,stri,strj;
pDC->TextOut(0,0,"训练的次数:");
pDC->TextOut(440,310,"训练次数");
pDC->TextOut(280,80,"输");
pDC->TextOut(280,120,"出");
//s.Format ("%d",this->GetDocument()->mycount);
//pDC->TextOut (100,0,s);
//画不变的地方
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
stri.Format ("%d",i);
strj.Format ("%d",j);
sw="输入层初始输入权值W["+stri+"]["+strj+"]= ";
pDC->TextOut (0,60+20*(j+i*3),sw);
}
//隐层
for(int j=0;j<3;j++)
{
strj.Format ("%d",j);
sw="隐含层初始输入权值W[0]["+strj+"]= ";
pDC->TextOut (0,250+20*j,sw);
}
//画坐标系
pDC->MoveTo(300,60);
pDC->LineTo(300,300);
pDC->LineTo(480,300);
pDC->MoveTo(300,60);
pDC->LineTo (297,70);
pDC->MoveTo(300,60);
pDC->LineTo (303,70);
pDC->MoveTo(480,300);
pDC->LineTo (470,297);
pDC->MoveTo(480,300);
pDC->LineTo (470,303);
count=this->GetDocument()->mycount;
if (pDoc->m_Sign&& ((CAppleApp*)AfxGetApp())->m_WNsign ==false)
{
CMainFrame* pMF=(CMainFrame*)AfxGetApp()->m_pMainWnd;
CChooseView* pLV=(CChooseView*)pMF->m_WndSplitter.GetPane(0,0);
pLV->go_one_step();
//pDoc->m_Sign=false;
}
//定义更新区域
//CRect reccount,myrect;
//myrect.SetRect(185,60,250,300);
//reccount.SetRect (100,0,120,20);
//myrect.SetRect(185,60,250,300);
/*if(pDoc->Success)
{
//画权重
double max1=0,max2=0,max3=0;
//训练的次数
s.Format ("%d",count);
pDC->TextOut (100,0,s);
//输入层
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
strweight.Format ("%f",pDoc->inweight[i][j]);
stri.Format ("%d",i);
strj.Format ("%d",j);
pDC->TextOut (185,60+20*(j+i*3),strweight);
}
//隐层
for(int j=0;j<3;j++)
{
strweight.Format ("%f",pDoc->hdweight[j]);
strj.Format ("%d",j);
pDC->TextOut (185,250+20*j,strweight);
}
//strj.Format ("%d",h);
//pDC->TextOut (185,250,strj);
// Sleep(1);
// InvalidateRect(&myrect,true);
//RECT rctB = {185,60,250,306};
//PeekMessage( &msg, NULL, 0, 0, PM_REMOVE );
////if( msg.message == WM_QUIT )
//// break;
//TranslateMessage( &msg );
//DispatchMessage( &msg );
//CPen newpen;
//newpen.CreatePen (PS_SOLID,2,RGB(255,0,0));
//CPen * pOldPen=(CPen*)pDC->SelectObject (&newpen);
//pDC->SelectStockObject (NULL_BRUSH);
CBrush newbrush;
newbrush.CreateHatchBrush(6,RGB(255,0,0));
CBrush * pOldpen=(CBrush*)pDC->SelectObject (&newbrush);
// if (h%1000==0)
// {
//pDC->Ellipse (380-h/1000*10,250-h/1000*10,390-h/1000*10,260-h/1000*10);
//pDC->SetPixel(h/20+320,h/100+200,RGB(255,0,0));
//double ratio=1;
//if(pDoc->lastout[h][0]>max1)
//{
// max1=pDoc->lastout[h][0];
// pDC->SetPixel((h+1)/50+300,280-max1*200,RGB(255,0,0));
//}
//if(pDoc->lastout[h][1]>max2)
//{
// max2=pDoc->lastout[h][1];
// pDC->SetPixel((h+1)/50+300,340-max2*200,RGB(0,0,0));
//}
//if(pDoc->lastout[h][2]>max3)
//{
// max3=pDoc->lastout[h][2];
// pDC->SetPixel((h+1)/50+300,380-max3*200,RGB(0,0,255));
//}
// CString g;
//// MessageBox("stop");
// g.Format ("%d",pDoc->lastout[pDoc->outnumber]);
// pDC->TextOut (300,400,g);
// pDoc->outnumber++;
//}
//画点
//380 250
//CPen newpen;
//newpen.CreatePen (PS_SOLID,2,RGB(255,0,0));
//CPen * pOldPen=(CPen*)pDC->SelectObject (&newpen);
//pDC->SelectStockObject (NULL_BRUSH);
//pDC->Ellipse (380,250,390,260);
//pDC->Ellipse (390,270,410,290);
//pDC->SelectObject (pOldPen);
pDoc->Success=false;
// delete pDoc->inweight;
// delete pDoc->hdweight;
}
else //开始时的输出
{
//训练的次数
s.Format ("%d",count);
pDC->TextOut (100,0,s);
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
strweight.Format ("%f",pDoc->inweight[i][j]);
stri.Format ("%d",i);
strj.Format ("%d",j);
pDC->TextOut (185,60+20*(j+i*3),strweight);
}
for(int j=0;j<3;j++)
{
strweight.Format ("%f",pDoc->hdweight[j]);
strj.Format ("%d",j);
pDC->TextOut (185,250+20*j,strweight);
}
//想保存当前的曲线,但没有成功
CRect reccount,myrect;
myrect.SetRect(0,1,0,1);
InvalidateRect(&myrect,false);
//画点不动
double max1=0,max2=0,max3=0;
for(int h=0;h<=count;h++)
{
if(pDoc->lastout[h][0]>max1)
{
max1=pDoc->lastout[h][0];
pDC->SetPixel((h+1)/50+300,280-max1*200,RGB(255,0,0));
}
if(pDoc->lastout[h][1]>max2)
{
max2=pDoc->lastout[h][1];
pDC->SetPixel((h+1)/50+300,340-max2*200,RGB(0,0,0));
}
if(pDoc->lastout[h][2]>max3)
{
max3=pDoc->lastout[h][2];
pDC->SetPixel((h+1)/50+300,380-max3*200,RGB(0,0,255));
}
}
}
*/
//pDoc->wout
if (pDoc->m_Sign&& ((CAppleApp*)AfxGetApp())->m_WNsign ==true)
{
CString theResult;
theResult="识别的结果是:"+pDoc->m_jieguo;
if(pDoc->gotorec)
pDC->TextOut (0,340,theResult);
// TODO: 在此处为本机数据添加绘制代码
drawpic(pDoc->jieguo); //画出水果的形状
}
((CAppleApp*)AfxGetApp())->m_WNsign =false;
}
void CAppleView::drawpic (int i)
{
pdc=GetDC();
switch(i)
{
case 100: //苹果
{
//CPen pen1;
//pen1.CreatePen (PS_SOLID,2,RGB(255,0,0));
//CPen * pOldPen=(CPen*)pdc->SelectObject (&pen1);
//pdc->Ellipse (130,316,150,336);
CBitmap Bmp;
Bmp.LoadBitmap(IDB_BMP_APPLE);
CDC memDC;
memDC.CreateCompatibleDC(pdc);
memDC.SelectObject (&Bmp);
pdc->BitBlt(140,320,400,400,&memDC,0,0,SRCCOPY);
break;
}
case 50: //桔子
{
//CPen pen1;
//pen1.CreatePen (PS_SOLID,2,RGB(255,255,0));
//CPen * pOldPen=(CPen*)pdc->SelectObject (&pen1);
//pdc->Ellipse (150,326,160,336);
CBitmap Bmp;
Bmp.LoadBitmap(IDB_BMP_JU);
CDC memDC;
memDC.CreateCompatibleDC(pdc);
memDC.SelectObject (&Bmp);
pdc->BitBlt(140,320,400,400,&memDC,0,0,SRCCOPY);
break;
}
case 25: //海棠
{
//CPen pen1;
//pen1.CreatePen (PS_SOLID,2,RGB(255,0,0));
//CPen * pOldPen=(CPen*)pdc->SelectObject (&pen1);
//pdc->Ellipse (145,321,155,331);
CBitmap Bmp;
Bmp.LoadBitmap(IDB_BMPHAI);
CDC memDC;
memDC.CreateCompatibleDC(pdc);
memDC.SelectObject (&Bmp);
pdc->BitBlt(140,320,400,400,&memDC,0,0,SRCCOPY);
break;
}
}
ReleaseDC(pdc);
}
// CAppleView 打印
BOOL CAppleView::OnPreparePrinting(CPrintInfo* pInfo)
{
// 默认准备
return DoPreparePrinting(pInfo);
}
void CAppleView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 打印前添加额外的初始化
}
void CAppleView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 打印后添加清除过程
}
// CAppleView 诊断
#ifdef _DEBUG
void CAppleView::AssertValid() const
{
CView::AssertValid();
}
void CAppleView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CAppleDoc* CAppleView::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAppleDoc)));
return (CAppleDoc*)m_pDocument;
}
#endif //_DEBUG
// CAppleView 消息处理程序
void CAppleView::OnInitialUpdate()
{
CView::OnInitialUpdate();
}
void CAppleView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_MousePos.x =point.x;
m_MousePos.y =point.y;
CString s,sx,sy;
s.Format ("%d ",m_MousePos.x);
sy.Format ("%d ",m_MousePos.y);
s+=sy;
MessageBox(s);
CView::OnLButtonDblClk(nFlags, point);
}
BOOL CAppleView::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//return true;
return CView::OnEraseBkgnd(pDC);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -