首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

GDI+泄漏如何那么高

2013-09-27 
GDI+泄漏怎么那么高用的是如下代码:Gdiplus::Graphics graphics(m_hWnd)Gdiplus::Image *image NULLim

GDI+泄漏怎么那么高
用的是如下代码:

Gdiplus::Graphics graphics(m_hWnd);
Gdiplus::Image *image = NULL;
image = Gdiplus::Image::FromFile( g_pAppInfo->m_strPicPathFacade );
RectF rt(10, 128, 660, 495);
graphics.DrawImage(image, rt);
//graphics.Clear();
DeleteObject(&graphics);
if ( NULL != image ) { delete image;image = NULL; }

因为图片比较大,放在OnPaint里面,发现其GDI对象成百倍增长,太夸张了,我程序跑个几分钟就死了,到底应该怎么办呢,调用的时候我调用了OnPaint消息:PostMessage(WM_PAINT); 这个有影响吗,大概2秒钟调用一次 gdi+ 图片 GDI泄漏 WM_PAINT OnPaint
[解决办法]
事实上是C++底下其实并不能释放GDI+的资源,GDI+在C#是靠垃圾回收机制进行资源释放的。

所以把image当成一个成员变量吧。
[解决办法]
好像没理由这样的,delete image之后就可以了
[解决办法]

引用:
事实上是C++底下其实并不能释放GDI+的资源,GDI+在C#是靠垃圾回收机制进行资源释放的。

所以把image当成一个成员变量吧。

+1
[解决办法]
GDI资源的释放不是实时的,哪怕你已经DEL了,在ONPAINT里频繁刷新是不合适的。
你自己换个地方刷新画图。

热点排行