void CMemBitmap::DrawPt(POINT pt[],int Count,*Brush)
{
CDC tDC,*pDC;
CBitmap *SecondBm,*pOldBm;
CRect rect; SecondBm=new CBitmap();
m_pWnd->GetClientRect(&rect);
pDC=m_pWnd->GetDC(); tDC.CreateCompatibleDC(pDC);
//创建第二个图层
SecondBm->CreateCompatibleBitmap(pDC,1000,1000); pOldBm=tDC.SelectObject(SecondBm);
//把第一个图层的内容COPY到第二个图层,他们的大小都是1000x1000
tDC.BitBlt(0,0,1000,1000,&m_pmenDC,0,0,SRCCOPY);
tDC.SelectObject(Brush);
for(int i=0;i<Count;i++)
{
//在第二个图层上面描点
tDC.Rectangle(pt[i].x,pt[i].y,pt[i].x+30,pt[i].y+30,Brush);
}//把第二个图层缩放到窗口上面显示
pDC->StretchBlt(0,0,rect.right,rect.bottom,&tDC,0,0,1000,1000,SRCCOPY);
tDC.SelectObject(pOldBm);
tDC.DeleteDC();
m_pWnd->ReleaseDC(pDC); delete SecondBm;
}我用1秒的速度调用这个函数,CPU占用率居然在8%-12%,真是无法接受,因为我看别人做的GDI动画效果很好,而且CPU占用也很低,所以应该是我的代码不合理,还请高手帮忙指点一二,谢谢~~~
{
CDC tDC,*pDC;
CBitmap *SecondBm,*pOldBm;
CRect rect; SecondBm=new CBitmap();
m_pWnd->GetClientRect(&rect);
pDC=m_pWnd->GetDC(); tDC.CreateCompatibleDC(pDC);
//创建第二个图层
SecondBm->CreateCompatibleBitmap(pDC,1000,1000); pOldBm=tDC.SelectObject(SecondBm);
//把第一个图层的内容COPY到第二个图层,他们的大小都是1000x1000
tDC.BitBlt(0,0,1000,1000,&m_pmenDC,0,0,SRCCOPY);
tDC.SelectObject(Brush);
for(int i=0;i<Count;i++)
{
//在第二个图层上面描点
tDC.Rectangle(pt[i].x,pt[i].y,pt[i].x+30,pt[i].y+30,Brush);
}//把第二个图层缩放到窗口上面显示
pDC->StretchBlt(0,0,rect.right,rect.bottom,&tDC,0,0,1000,1000,SRCCOPY);
tDC.SelectObject(pOldBm);
tDC.DeleteDC();
m_pWnd->ReleaseDC(pDC); delete SecondBm;
}我用1秒的速度调用这个函数,CPU占用率居然在8%-12%,真是无法接受,因为我看别人做的GDI动画效果很好,而且CPU占用也很低,所以应该是我的代码不合理,还请高手帮忙指点一二,谢谢~~~
解决方案 »
- VC++如何加载显示PNG图片?
- 调一个入门级程序报LNK2005错误
- openMP程序的部署问题,在线等候~~~~~~~~~~~~~~~~~~~~~~
- 救人了。将单文档移植到DLL中相关问题
- 关于RichEdit问题
- 如何创建一个最简单的窗口?
- 用CInternetSession下载二进制文件!
- 请教一个API函数:SetWindowRgn 高分在线等待!结贴迅速,欢迎up!
- ATL中的库存(公共)属性
- 文件监控
- 如何将OLE控件的对象传入到组件中去,请大家指教
- getsockopt(s,SOL_SOCKET,SO_CONNECT_TIME,(char*)&flag,&len);全返回0 ?
1,我无法进入提问社区,我是新手请多指教
2,vc+ado中
_Recordset mySet;
BOOL M=mySet->adoEOF;
BOOL N=mySet->BOF;
编译时出现一个错误:error C2039: 'adoEOF' : is not a member of '_Recordset'
请大家指教,多谢
CBitmap *SecondBm,*pOldBm;
CRect rect; SecondBm=new CBitmap();
m_pWnd->GetClientRect(&rect);
pDC=m_pWnd->GetDC(); tDC.CreateCompatibleDC(pDC);
//创建第二个图层
SecondBm->CreateCompatibleBitmap(pDC,1000,1000);可以把以上这些代码都放在初始化里进行啊,如果你的这个函数频繁调用的话,这样会节省一些CPU的时间的