关于频繁创建CPen和释放CPen出现的问题

PageLee 2009-03-04 12:32:34
CPen pen(PS_DOT,1,RGB(0,255,0));//构造画笔对象
CClientDC dc(this);
CPen *pOldPen;
for(int i=0;i<10000;i++)
{
pOldPen=dc.SelectObject(&pen);//将画笔选入DC
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
dc.SelectObject(pOldPen);//恢复先前的画笔
}

类似以上代码,刚开始是可以的,不过运行一段时间后,就会出现问题,先是窗口都变灰,然后
弹出“申请资源不足"之类的对话框,请问如何能够解决。
...全文
138 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kudeet 2009-03-04
  • 打赏
  • 举报
回复
我想你的循环里面应该只是修改画线的坐标:
pOldPen=dc.SelectObject(&pen);//将画笔选入DC
for(int i=0;i <10000;i++)
{
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);
}
dc.SelectObject(pOldPen);//恢复先前的画笔
redstar_five 2009-03-04
  • 打赏
  • 举报
回复
把画笔的设置与恢复,放在循环之外
菜牛 2009-03-04
  • 打赏
  • 举报
回复
这段代码效率有问题,但是没错。应该还有其他问题。可以先注释掉看看。

19,468

社区成员

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

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