.Net Windows窗体ListView OwnerDraw LargeImageList泄漏

时间:2009-11-16 16:55:12

标签: c# .net winforms listview

我正在绘制.Net Windows窗体ListView控件,当我需要从关联的LargeImageList中绘制图像时,会看到一个非常奇怪的错误/行为。

当View类型是使用LargeImageList的类型(Tile,LargeIcon等)时,我从LargeImageList中绘制项目图像。在那种情况下,我看到一个巨大的内存增加,当你尝试滚动ListView时,这变得更加明显,因为你看到一个生涩的滚动。当相同的代码使用SmallImageList时,同样的事情不会发生,就像这样:

Image MyImage = this.LargeImageList.Images[MyIndex];
e.Graphics.DrawImage(MyImage,MyLocation);

根据我的测试,这可以在XP和7下重现。这是一个已知的错误,任何解决方法吗?

此致

Özden

2 个答案:

答案 0 :(得分:3)

虽然我仍然认为这是一个错误,但我找到了一个解决方法。如果你使用 ImageList.Draw 而不是 e.Graphics.DrawImage 进行绘制,这个问题似乎就会消失。

答案 1 :(得分:1)

您如何管理无效的绘图区域?正如你所说,看起来你正在“透支”控件,我的意思是,即使没有必要也要画画。