gdi+如何释放资源
最近在VC6.0中使用GDI+绘图。通过计时器使图形反复重绘,在Windows任务管理器中发现内存在不断增长。查了MSDN上说GDI+资源(Pen、Brush、Graph...
最近在VC6.0中使用GDI+绘图。通过计时器使图形反复重绘,在Windows任务管理器中发现内存在不断增长。查了MSDN上说GDI+资源(Pen、Brush、Graphics等)用完后要释放。
请问GDI+资源的释放方法是什么?
void CMSP_view::OnDraw(CDC* pDC)
{
Graphics graphics(pDC);
Pen ConfirmPen(Gdiplus::Color::Red, 2);
CPoint pixP1,pixP2;
pixP1 = CPoint(10, 10);
pixP2 = CPoint(100,100);
graphics.DrawLine(&ConfirmPen,pixP1.x, pixP1.y, pixP2.x, pixP2.y);
//如何释放Graphics 和Pen (?)
} 展开
请问GDI+资源的释放方法是什么?
void CMSP_view::OnDraw(CDC* pDC)
{
Graphics graphics(pDC);
Pen ConfirmPen(Gdiplus::Color::Red, 2);
CPoint pixP1,pixP2;
pixP1 = CPoint(10, 10);
pixP2 = CPoint(100,100);
graphics.DrawLine(&ConfirmPen,pixP1.x, pixP1.y, pixP2.x, pixP2.y);
//如何释放Graphics 和Pen (?)
} 展开
4个回答
2013-04-19
展开全部
GDI+通常生命期一结束自动会释放内存。我之前用GDI+做的一个程序,也是内存占用增长很快,一般最小化一下再恢复内存占用就会减下去些。之后查了下据说是因为GDIPLUS.DLL的资源底层是由操作系统管理的,为了效率而减少了内存的操作次数。对于OnDraw,最好把Graphics和Pen改成静态的或全局的,可以减轻每次构造和析构的成本,也会大大减少内存增长的速度。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
声明成指针类型,pen就可以delete掉了,graphic应该不需要释放
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请问解决没有?
我也遇到这个问题了,困扰很久了
我也遇到这个问题了,困扰很久了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ReleaseDC,DeleteObject
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询