关于lstbox_DrawItem

Sep 5, 2010 at 7:31 AM
Edited Sep 5, 2010 at 7:53 PM

lstbox开启自动重绘后,发现不停重绘。加了图片使性能下降。很卡

 

//画左边的图片
                                imghelp.LoadImage(Application.StartupPath + @"\read.png");
                               // imghelp = imgcon.LoadImageFromMzResV2(MzResV2.Png_Send, true);
                                Rectangle imgRect = new Rectangle(2, e.ItemRectangle.Y + 13, imghelp.ImageWidth, imghelp.ImageHeight);
                                imghelp.Draw(g, imgRect, true, true);
                                //画右边箭头
                                imghelp2 = imgcon2.LoadImageFromMzResV2(MzResV2.Png_Arrow_Right, true);
                                Rectangle imgright = new Rectangle(442, e.ItemRectangle.Y + 28, imghelp2.ImageWidth, imghelp2.ImageHeight);

                                imghelp2.Draw(g, imgright, true, true);

加了画图片巨卡。

 

 

9.6,2:52

巨卡并且发现重绘导致内存不断增加。

望解决。

 

不知道如何解决

Coordinator
Sep 6, 2010 at 2:47 AM

“巨卡并且发现重绘导致内存不断增加”是因为你将图片加载放到了列表项重绘函数中了,列表项每添加一次,就需要将此项进行重汇一次,所以会卡,而由于你未释放ImagingHelper占用的内存,所以导致内存不断增加。

所以,不可在绘制过程中加载图片,如果需要使用ImagingHelper加载图片,请使用ImageContainer.LoadImage(FileName),在窗口初始化时加载,并在窗口Dispose函数中释放ImageContainer中的资源