如下程序用于绘制一条凸轮曲线:
Clear();//该函数是自己写的函数,用以清除视图区内的所有图形
for(i=1;i<nNumInPRFile;i++)
{
pDC->LineTo(pt[i]);
Sleep(5);
}
原以为这段程序首先清除视图区,然后执行后面的循环,但是实际上看到的效果是Clear()函数的作用在循环结束以后才体现出来。估计实际上执行了Clear()函数,但是没有立即刷新出来,如何解决这种问题呀?Sleep()这个函数实在是烦躁,老是使我记得程序界面停滞,处于程序忙,等待中、、、、、、、、、、可我又不知道其它好的方法,ft
Clear();//该函数是自己写的函数,用以清除视图区内的所有图形
for(i=1;i<nNumInPRFile;i++)
{
pDC->LineTo(pt[i]);
Sleep(5);
}
原以为这段程序首先清除视图区,然后执行后面的循环,但是实际上看到的效果是Clear()函数的作用在循环结束以后才体现出来。估计实际上执行了Clear()函数,但是没有立即刷新出来,如何解决这种问题呀?Sleep()这个函数实在是烦躁,老是使我记得程序界面停滞,处于程序忙,等待中、、、、、、、、、、可我又不知道其它好的方法,ft
{
CPMACDoc* pDoc=GetDocument();
ASSERT_VALID(pDoc);
CMetaFileDC* ReplacementMetafileDC=new CMetaFileDC();
ReplacementMetafileDC->Create();
delete pDoc->pMetaFileDC;
pDoc->pMetaFileDC=ReplacementMetafileDC;
Invalidate();
}
我用元文件保存绘制过的图形,再在OnDraw()函数中重放出来。
void CPMACView::OnDraw(CDC* pDC)
{
CPMACDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc); HMETAFILE MetaFileHandle=pDoc->pMetaFileDC->Close();
pDC->PlayMetaFile(MetaFileHandle);
CMetaFileDC* ReplacementMetafileDC=new CMetaFileDC();
ReplacementMetafileDC->Create();
ReplacementMetafileDC->PlayMetaFile(MetaFileHandle);
DeleteMetaFile(MetaFileHandle);
delete pDoc->pMetaFileDC;
pDoc->pMetaFileDC=ReplacementMetafileDC;}另外:我单独调用Clear()函数已经能够清除视图区所以的图形了。