【VC开源代码栏目提醒】:网学会员,鉴于大家对VC开源代码十分关注,论文会员在此为大家搜集整理了“3DShowView.cpp”一文,供大家参考学习!
// 3DShowView.cpp : implementation of the CMy3DShowView class
//
#include "stdafx.h"
#include "3DShow.h"
#include "3DShowDoc.h"
#include "3DShowView.h"
#include "Memdc.h"
#include "math.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMy3DShowView
IMPLEMENT_DYNCREATE(CMy3DShowView, CView)
BEGIN_MESSAGE_MAP(CMy3DShowView, CView)
//{{AFX_MSG_MAP(CMy3DShowView)
ON_WM_TIMER()
//}}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()
/////////////////////////////////////////////////////////////////////////////
// CMy3DShowView construction/destruction
CMy3DShowView::CMy3DShowView()
{
// TODO: add construction code here
}
CMy3DShowView::~CMy3DShowView()
{
}
BOOL CMy3DShowView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMy3DShowView drawing
void CMy3DShowView::OnDraw(CDC* pDC)
{
CMy3DShowDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CMy3DShowView printing
BOOL CMy3DShowView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CMy3DShowView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CMy3DShowView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CMy3DShowView diagnostics
#ifdef _DEBUG
void CMy3DShowView::AssertValid() const
{
CView::AssertValid();
}
void CMy3DShowView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CMy3DShowDoc* CMy3DShowView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMy3DShowDoc)));
return (CMy3DShowDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMy3DShowView message handlers
void CMy3DShowView::OnInitialUpdate()
{
CView::OnInitialUpdate();
SetTimer(0,50,NULL);
}
void CMy3DShowView::OnTimer(UINT nIDEvent)
{
static int a=0;
Cule(a,RGB(255,255,255),100);
a++;
Cule(a,RGB(255,0,0),100);
CView::OnTimer(nIDEvent);
}
void CMy3DShowView::Cule(int a, COLORREF col, int r)
{
#define PI 3.1432
#define X0 150
#define Y0 150
float a1=a*PI/180;
float x1,x2,x3,x0,y1,y2,y3,y0;
int range=r*1.2;
x1=r*cos(a1)*cos(a1)-r*sin(a1)*sin(a1)+X0;
y1=r*sin(a1)*cos(a1)+Y0;
x2=r*cos(a1+2*PI/3)*cos(a1+2*PI/3)-r*sin(a1+2*PI/3)*sin(a1+2*PI/3)+X0;
y2=r*sin(a1+2*PI/3)*cos(a1+2*PI/3)+Y0;
x3=r*cos(a1+4*PI/3)*cos(a1+4*PI/3)-r*sin(a1+4*PI/3)*sin(a1+4*PI/3)+X0;
y3=r*sin(a1+4*PI/3)*cos(a1+4*PI/3)+Y0;
x0=X0;
y0=Y0-r;
CDC* pDC=GetDC();
CPen pen1(PS_SOLID,1,RGB(0,0,255));
CPen* pOldPen1=pDC->SelectObject(&pen1);
pDC->MoveTo(X0-range,Y0);
pDC->LineTo(X0+range,Y0);
pDC->MoveTo(X0,Y0-range);
pDC->LineTo(X0,Y0+range);
pDC->MoveTo(X0-range,Y0+range);
pDC->LineTo(X0+range,Y0-range);
pDC->SelectObject(pOldPen1);
CPen pen2(PS_SOLID,1,col);
CPen* pOldPen2=pDC->SelectObject(&pen2);
pDC->MoveTo(x0,y0);
pDC->LineTo(x1,y1);
pDC->MoveTo(x0,y0);
pDC->LineTo(x2,y2);
pDC->MoveTo(x0,y0);
pDC->LineTo(x3,y3);
pDC->MoveTo(x1,y1);
pDC->LineTo(x2,y2);
pDC->MoveTo(x2,y2);
pDC->LineTo(x3,y3);
pDC->MoveTo(x3,y3);
pDC->LineTo(x1,y1);
pDC->SelectObject(pOldPen2);
ReleaseDC(pDC);
}