⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bpnlayerexeview.cpp

📁 BP神经网络程序
💻 CPP
字号:
// BpNlayerEXEView.cpp : implementation of the CBpNlayerEXEView class
//

#include "stdafx.h"
#include "BpNlayerEXE.h"

#include "BpNlayerEXEDoc.h"
#include "BpNlayerEXEView.h"
#include "NewProject.h"
#include <math.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CBpNlayerEXEView

IMPLEMENT_DYNCREATE(CBpNlayerEXEView, CScrollView)

BEGIN_MESSAGE_MAP(CBpNlayerEXEView, CScrollView)
	//{{AFX_MSG_MAP(CBpNlayerEXEView)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBpNlayerEXEView construction/destruction

CBpNlayerEXEView::CBpNlayerEXEView()
{
	// TODO: add construction code here

}

CBpNlayerEXEView::~CBpNlayerEXEView()
{
}

BOOL CBpNlayerEXEView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CBpNlayerEXEView drawing

void CBpNlayerEXEView::OnDraw(CDC* pDC)
{
	CBpNlayerEXEDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	int layernumber;
	int maxLayerCapture=0;
	CPen pen(PS_SOLID,2,RGB(255,143,89));
	CBrush brush(RGB(248,252,167));
	pDC->SelectObject(brush);
	pDC->SelectObject(pen);
	layernumber=pDoc->m_iLayerNum;
	for (int i=0;i<layernumber;i++)
	{
		if (maxLayerCapture<*(pDoc->m_piLayerCapture+i))
		{
			maxLayerCapture=*(pDoc->m_piLayerCapture+i);
		}
	}
	CPoint point1(0,0);
	CPoint point2(0,0);
	CPoint point3(0,0);
	int iTemp1=70*maxLayerCapture+80;
	int iTemp2=0;
	int iOrigin=0;
	int iEnd=0;
	for (int i=0;i<pDoc->m_iLayerNum;i++)
	{	
		
		point1.x=i*130+50;
		point2.x=(i-1)*130+100;
		iOrigin=iTemp2;
		iTemp2=*(pDoc->m_piLayerCapture+i)*70+80;
		
		
		for (int j=0;j<*(pDoc->m_piLayerCapture+i);j++)
		{
			point1.y=(int)((iTemp1-iTemp2)/2)+j*70+50;
			DrawNueCell(pDC,point1);
			for (int k=0;k<*(pDoc->m_piLayerCapture+i-1);k++)
			{
				point2.y=((iTemp1-iOrigin)/2)+k*70+75;
				point3.x=point1.x;
				point3.y=point1.y+25;
				DrawArrowLine(pDC,point2,point3);
			}		
		}
		
		if (i==0)
		{
			for (int j=0;j<*(pDoc->m_piLayerCapture);j++)
			{
				point3.x=50;
				point3.y=(iTemp1-iTemp2)/2+75+j*70;
				point2.x=0;
				point2.y=point3.y;
				DrawArrowLine(pDC,point2,point3);
			}
		}
		
			
		if (i==(pDoc->m_iLayerNum-1))
		{
			for (int j=0;j<*(pDoc->m_piLayerCapture+i);j++)
			{
				
				point3.x=pDoc->m_iLayerNum*130+20;
				point3.y=(iTemp1-iTemp2)/2+75+j*70;
				point2.x=pDoc->m_iLayerNum*130-30;
				point2.y=point3.y;
				DrawArrowLine(pDC,point2,point3);
			}
		}
	}									
	SetScrollSizes(MM_TEXT,CSize(pDoc->m_iLayerNum*130+50,iTemp1));
}

/////////////////////////////////////////////////////////////////////////////
// CBpNlayerEXEView diagnostics

#ifdef _DEBUG
void CBpNlayerEXEView::AssertValid() const
{
	CScrollView::AssertValid();
}

void CBpNlayerEXEView::Dump(CDumpContext& dc) const
{
	CScrollView::Dump(dc);
}

CBpNlayerEXEDoc* CBpNlayerEXEView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CBpNlayerEXEDoc)));
	return (CBpNlayerEXEDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CBpNlayerEXEView message handlers



//DEL void CBpNlayerEXEView::OnWindowSplit() 
//DEL {
//DEL 	// TODO: Add your command handler code here
//DEL 	
//DEL }

void CBpNlayerEXEView::OnInitialUpdate() 
{
	CScrollView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	SetScrollSizes(MM_TEXT,CSize(100,100));
}


/////////////////////////////////////////////////////////////////
void CBpNlayerEXEView::DrawNueCell(CDC* pDC,CPoint LeftTopPoint)
{
	CPoint pointTemp(LeftTopPoint.x+50,LeftTopPoint.y+50);
	CRect rect(LeftTopPoint,pointTemp);
	pDC->Ellipse(rect);
}

void CBpNlayerEXEView::DrawArrowLine(CDC* pDC,CPoint PointOrigin,CPoint PointEnd)
{
	//CPoint pointTemp;
	CPoint pointTemp;
	pDC->MoveTo(PointOrigin);
	pDC->LineTo(PointEnd);
	
	pointTemp.y=int(-sin(atan((double)(PointEnd.y-PointOrigin.y)/(PointEnd.x-PointOrigin.x))+0.53)*10+PointEnd.y);
	pointTemp.x=int(-cos(atan((double)(PointEnd.y-PointOrigin.y)/(PointEnd.x-PointOrigin.x))+0.53)*10+PointEnd.x);
	pDC->MoveTo(PointEnd);
	pDC->LineTo(pointTemp);
	pointTemp.y=int(sin(0.53-atan((double)(PointEnd.y-PointOrigin.y)/(PointEnd.x-PointOrigin.x)))*10+PointEnd.y);
	pointTemp.x=int(-cos(0.53-atan((double)(PointEnd.y-PointOrigin.y)/(PointEnd.x-PointOrigin.x)))*10+PointEnd.x);

	pDC->MoveTo(PointEnd);
	pDC->LineTo(pointTemp);
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -