| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 395 人关注过本帖
标题:请教,祝回帖者财源广进
只看楼主 加入收藏
mystrive
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-7-22
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
请教,祝回帖者财源广进
这是一段实现三角形,矩形,圆形之间的动画转换,可是编译的结果却始终是三角形,并不见转换过程,我觉得是定时器和Oncreate函数里面出问题了,但是研究了一下午还是没找到解决方法,请高手指出问题所在,感激涕零!



#include "stdafx.h"
#include "图形.h"
#include "图形Doc.h"
#include "图形View.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMyView
IMPLEMENT_DYNCREATE(CMyView, CView)
BEGIN_MESSAGE_MAP(CMyView, CView)
//{{AFX_MSG_MAP(CMyView)
  // NOTE - the ClassWizard will add and remove mapping macros here.
  //    DO NOT EDIT what you see in these blocks of generated code!
//}}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()
/////////////////////////////////////////////////////////////////////////////
// CMyView construction/destruction
CMyView::CMyView()
{
// TODO: add construction code here
ituxing=0;

}
CMyView::~CMyView()
{
}
BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
//  the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CMyView drawing
void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
    CBrush mybrush1;
    mybrush1.CreateSolidBrush(RGB(255,255,255));
    CRect myrect1(0,0,1024,768);
    pDC->FillRect(myrect1,&mybrush1);
    //判断当前图形ituxing
  pDC->Ellipse(30*ituxing,30*ituxing,30*ituxing+50,30*ituxing+50);

// TODO: add draw code for native data here
}



BOOL CMyView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CMyView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CMyView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CMyView diagnostics
#ifdef _DEBUG
void CMyView::AssertValid() const
{
CView::AssertValid();
}
void CMyView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CMyDoc* CMyView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));
return (CMyDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMyView message handlers

void CMyView::OnTimer(UINT nIDEvent)
{
  CDC *pDC=GetDC();
     //调用OnDraw(pDC)重画
     OnDraw(pDC);
     //使ituxing循环
    ituxing=(ituxing+1)%10;

     CView::OnTimer(nIDEvent);

}


int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
            return -1;

     // TODO: Add your specialized creation code here
     //设置更新时间
     SetTimer(1, 750, NULL);
     return 0;

}
搜索更多相关主题的帖子: 财源 
2010-07-26 17:53
红色警戒
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:19
帖 子:444
专家分:2967
注 册:2005-11-20
收藏
得分:10 
pDC->Ellipse(30*ituxing,30*ituxing,30*ituxing+50,30*ituxing+50); 只能画椭圆的吧,没有画三角和矩形的功能吧,你能看到画出三角形了?
画矩形用Rectangle()   Draws a rectangle using the current pen and fills it using the current brush
画三角形的函数好像是没有。

2010-07-26 20:02
mystrive
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-7-22
收藏
得分:0 
回复 2楼 红色警戒
这个地方我说错了,不好意思,这里实现的是一个椭圆在时间进程中不同位置显示出来,可是只显示出来第一个椭圆,之后的椭圆出不来,还请你给再看看,多谢了
2010-07-27 08:12
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:10 
void CMyView::OnTimer(UINT nIDEvent)
{
  CDC *pDC=GetDC();                     
     //调用OnDraw(pDC)重画
     OnDraw(pDC);                       ////这里是错误的,OnDraw不是这种调用方式。而且它用的也不是CDC绘图,而是CDC的子类CPaintDC。
     //使ituxing循环
    ituxing=(ituxing+1)%10;

     CView::OnTimer(nIDEvent);

}
改成这样,OK:
void CMyView::OnTimer(UINT nIDEvent)
{
     ituxing = (++ituxing)%10;                //准备绘图数据
     Invalidate(TRUE);                       //欺骗窗口无效,让windows重绘。FALSE,不擦除背景,TRUE擦除背景   
     CView::OnTimer(nIDEvent);

}

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-07-27 08:53
mystrive
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-7-22
收藏
得分:0 
回复 4楼 东海一鱼
:\c++\MSDev98\MyProjects\图形\图形View.cpp(181) : error C2084: function 'void __thiscall CMyView::OnTimer(unsigned int)' already has a body
Error executing cl.exe.
首先感谢你帮助,可是还出现了这样一条错误,你给看看是怎么回事,麻烦了
2010-08-03 09:36
mystrive
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-7-22
收藏
得分:0 
回复 4楼 东海一鱼
那个错误不存在,我弄错了,只是编译通过了但还是和之前一样没有产生动画
2010-08-03 09:56
快速回复:请教,祝回帖者财源广进
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040610 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved