Win XP中ListView中的图像渲染不良

时间:2012-07-25 08:38:22

标签: c# winforms listview rendering thumbnails

我在使用基于.NET 3.5的winforms应用程序中的ListView中渲染图像时遇到问题。

在ListView控件中,我使用LargeImageList作为缩略图。

应用程序在Win 7中正常工作 - 缩略图中的图像都可以,但如果应用程序在Win XP中运行,则缩略图中的图像会变坏。

Win 7和Win Xp中的渲染之间的区别在于此image

什么会导致这种行为?

编辑:谢谢大家的回复和建议。它已经解决了。我使用另一个控件而不是winforms listview。

2 个答案:

答案 0 :(得分:0)

您可以查看Better ListView组件。我们付出了巨大努力来启用任意大小的缩略图:

enter image description here

渲染使用GDI +,因此XP和Windows 7上的结果看起来相同(当然,选择除外,这些选择基于Windows主题)。

.NET ListView是一个Win32控件包装器,因此外观在很大程度上取决于操作系统,我们在托管代码中完全编写了一个控件,以避免这些问题。

答案 1 :(得分:0)

您可以尝试使用免费 ObjectListView控件来实现此目的。您可以从http://objectlistview.sourceforge.net下载。

基本实施

  1. 使用ObjectListView替换常规ListView控件。
  2. 创建一个包含要在ObjectListView上显示的字段的类 这是必要的,因为OLV不直接使用 ListViewItem 来显示元素。
  3. 在OLV中创建列(在代码中)并指定将为列显示的属性(从步骤2开始)。
  4. 将要显示图像的列的ImageGetter属性(通常是第一列)设置为返回Imagestring或{{1}的函数},对应于您要为项目显示的图像 如果某个函数返回intstring,则该项目将显示OLV的intLargeImageList中的图像。
  5. 使用SmallImageListEnumerable方法创建要显示的项目的SetObjects个集合,并将其附加到OLV。
  6. 在返回要为项目显示的图像的功能中,使用GDI(或任何您想要的)渲染图像并将其返回以在OLV中显示。