VC中编写画圆程序,怎么做可以观察到圆依次出现的效果

zhrmj87 2009-03-22 10:22:32
以这段程序为例

#include<afxwin.h>
#include<afxext.h>
class CMainApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};
class CMainWnd:public CFrameWnd
{
public:
void Draw(CDC* pDC);
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP();
};
BEGIN_MESSAGE_MAP(CMainWnd,CFrameWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
void CMainWnd::Draw(CDC *pDC)
{

POINT p[20];
p[0].x=20;
p[0].y=20;
int i;
for(i=1;i<20;i++)
{
p[i].x=p[i-1].x+10;
p[i].y=20;
}


for(i=0;i<15;i++)
{
CPen pen;
pen.CreatePen(PS_INSIDEFRAME,1,RGB(255,0,0));
pDC->SelectObject(&pen);
CBrush cbrush;
cbrush.CreateSolidBrush(RGB(255,0,0));
pDC->SelectObject(&cbrush);
pDC->Ellipse(p[i].x-5,p[i].y-5,p[i].x+5,p[i].y+5);
}

}
void CMainWnd::OnPaint()
{
CPaintDC dc(this);
Draw(&dc);
CFrameWnd::OnPaint();
}
BOOL CMainApp::InitInstance()
{
CMainWnd *pFrame=new CMainWnd;
pFrame->Create(0," ",WS_OVERLAPPEDWINDOW,CRect(0,0,500,500));
this->m_pMainWnd=pFrame;
pFrame->ShowWindow(m_nCmdShow);
pFrame->UpdateWindow();
return TRUE;
}
CMainApp MyApp;
以上程序中画了若干个圆,我想让这些圆动态显示出来,就是可以让人观察到圆一个接一个出现的过程,这该怎么处理?
...全文
493 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LCaoGIS 2009-03-26
  • 打赏
  • 举报
回复
可以用setrop2(R2_NOTXORPEN) 先对前一次的绘图进行擦除,在对本次的绘图进行绘制 可以实现随鼠标移动 放大缩小哦。
pioneer_public 2009-03-23
  • 打赏
  • 举报
回复
ptcenter.x
ptcenter.y
r

将以上3个值定义为全局变量,或类的变量

增加定时器

在定时器中修改这3个值,就可以逐步显示了

,如果需要在ONDRAW中一起显示

则在每个圆的绘制完成后sleep(1000);也可以。
zhrmj87 2009-03-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fyzqzpd 的回复:]
看到MFC头都大了,要逐步显示在Draw()函数中不要使用for循环
也就是说每一帧执行一次pDC->Ellipse(p[i].x-5,p[i].y-5,p[i].x+5,p[i].y+5);
做一个定时器。
[/Quote]谢谢您啊...我最近刚开始学VC,很多地方都不懂,我需要模拟扩散过程,如果不用循环似乎难以实现呢,您能说下用Draw()函数具体怎么操作吗?用循环没办法实现吗?
zhrmj87 2009-03-22
  • 打赏
  • 举报
回复
用sleep()具体怎么做啊?谢谢您啊!
zhrmj87 2009-03-22
  • 打赏
  • 举报
回复
谢谢您啊...我最近刚开始学VC,很多地方都不懂,我需要模拟扩散过程,如果不用循环似乎难以实现呢,您能说下用Draw()函数具体怎么操作吗?用循环没办法实现吗?
liweiwei0808 2009-03-22
  • 打赏
  • 举报
回复
或者用sleep也可以
zhao1zhong6 2009-03-22
  • 打赏
  • 举报
回复
看到MFC头都大了,要逐步显示在Draw()函数中不要使用for循环
也就是说每一帧执行一次pDC->Ellipse(p[i].x-5,p[i].y-5,p[i].x+5,p[i].y+5);
做一个定时器。

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧