#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个点 分别两两连接这些点并将图形输出 

解决方案 »

  1.   

    没有问题啊? 你的代码在我这里也是一个圆啊 能输出来的啊!你确定你贴出来的是全部代码么?如果不是 那你在别的地方是不是改变或pDC的画笔颜色? 或者使用过内存绘图么? 还是你在别的地方有将屏幕贴成白色的代码?
      

  2.   

    没有用OPENGL吗?只是VC?你的库函数呢?
      

  3.   

    恩 没用OPENGL怎么用啊 ??
      

  4.   

    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)); 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));

    有没有括号的啊?
      

  5.   

    上面的{}我不对的,我觉得你可以在画的地方OnDraw(CDC* pDC)  你可以加入 创建自己的画笔 然后选入设备 再来画 
      

  6.   

    static CPoint pos=CPoint(400,400);
    这个换成
    CRect r;
    pDC->GetClient(r);
    CPoint pos=CPoint(r.width()/2,r.height()/2);
      

  7.   

    有没有 virtual void OnDraw(CDC* pDC); ?
    有没有 OnDraw ?