#include "stdafx.h"
#include "CViewTest.h"#include "CViewTestDoc.h"
#include "CViewTestView.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CCViewTestViewIMPLEMENT_DYNCREATE(CCViewTestView, CView)BEGIN_MESSAGE_MAP(CCViewTestView, CView)
// 标准打印命令
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()// CCViewTestView 构造/析构CCViewTestView::CCViewTestView()
{
// TODO: 在此处添加构造代码}CCViewTestView::~CCViewTestView()
{
}BOOL CCViewTestView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改
// CREATESTRUCT cs 来修改窗口类或样式 return CView::PreCreateWindow(cs);
}// CCViewTestView 绘制#define PI 3.1415926void CCViewTestView::OnDraw(CDC* pDC)
{
// CCViewTestDoc* pDoc = GetDocument();
// ASSERT_VALID(pDoc);
// if (!pDoc)
// return; static int step=40;
static int Radius=200;
static CPoint pos=CPoint(400,400);
pDC->MoveTo(pos.x+Radius*(float)cos(0.0f), pos.y+Radius*(float)sin(0.0f));
for(int ni=0; ni<step; ++ni)//
pDC->LineTo(pos.x+Radius*(float)cos(2* PI/step*ni), pos.y+Radius*(float)sin(2* PI/step*ni));//
pDC->LineTo(pos.x+Radius*(float)cos(0.0f), pos.y+Radius*(float)sin(0.0f));
}BOOL CCViewTestView::OnPreparePrinting(CPrintInfo* pInfo)
{
return DoPreparePrinting(pInfo);
}void CCViewTestView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}void CCViewTestView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}#ifdef _DEBUG
void CCViewTestView::AssertValid() const
{
CView::AssertValid();
}void CCViewTestView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}CCViewTestDoc* CCViewTestView::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCViewTestDoc)));
return (CCViewTestDoc*)m_pDocument;
}
#endif //_DEBUG
哪个大哥能帮忙生成下或者修改下 要求是 在圆心(400,400)半径为200的圆弧上等简割取40个点 分别两两连接这些点并将图形输出
#include "CViewTest.h"#include "CViewTestDoc.h"
#include "CViewTestView.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CCViewTestViewIMPLEMENT_DYNCREATE(CCViewTestView, CView)BEGIN_MESSAGE_MAP(CCViewTestView, CView)
// 标准打印命令
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()// CCViewTestView 构造/析构CCViewTestView::CCViewTestView()
{
// TODO: 在此处添加构造代码}CCViewTestView::~CCViewTestView()
{
}BOOL CCViewTestView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改
// CREATESTRUCT cs 来修改窗口类或样式 return CView::PreCreateWindow(cs);
}// CCViewTestView 绘制#define PI 3.1415926void CCViewTestView::OnDraw(CDC* pDC)
{
// CCViewTestDoc* pDoc = GetDocument();
// ASSERT_VALID(pDoc);
// if (!pDoc)
// return; static int step=40;
static int Radius=200;
static CPoint pos=CPoint(400,400);
pDC->MoveTo(pos.x+Radius*(float)cos(0.0f), pos.y+Radius*(float)sin(0.0f));
for(int ni=0; ni<step; ++ni)//
pDC->LineTo(pos.x+Radius*(float)cos(2* PI/step*ni), pos.y+Radius*(float)sin(2* PI/step*ni));//
pDC->LineTo(pos.x+Radius*(float)cos(0.0f), pos.y+Radius*(float)sin(0.0f));
}BOOL CCViewTestView::OnPreparePrinting(CPrintInfo* pInfo)
{
return DoPreparePrinting(pInfo);
}void CCViewTestView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}void CCViewTestView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
}#ifdef _DEBUG
void CCViewTestView::AssertValid() const
{
CView::AssertValid();
}void CCViewTestView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}CCViewTestDoc* CCViewTestView::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCViewTestDoc)));
return (CCViewTestDoc*)m_pDocument;
}
#endif //_DEBUG
哪个大哥能帮忙生成下或者修改下 要求是 在圆心(400,400)半径为200的圆弧上等简割取40个点 分别两两连接这些点并将图形输出
pDC->LineTo(pos.x+Radius*(float)cos(2* PI/step*ni), pos.y+Radius*(float)sin(2* PI/step*ni));//
pDC->LineTo(pos.x+Radius*(float)cos(0.0f), pos.y+Radius*(float)sin(0.0f)); for(int ni=0; ni <step; ++ni)//
{
pDC->LineTo(pos.x+Radius*(float)cos(2* PI/step*ni), pos.y+Radius*(float)sin(2* PI/step*ni));//
pDC->LineTo(pos.x+Radius*(float)cos(0.0f), pos.y+Radius*(float)sin(0.0f));
}
有没有括号的啊?
这个换成
CRect r;
pDC->GetClient(r);
CPoint pos=CPoint(r.width()/2,r.height()/2);
有没有 OnDraw ?