0

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

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

应用程序在 Win 7 中正常工作 - 缩略图中的图像正常,但如果应用程序在 Win XP 中运行,缩略图中的图像会呈现错误。

Win 7 和 Win Xp 中渲染的区别就在于此图片

什么会导致这种行为?

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

4

2 回答 2

0

为此,您可以尝试使用免费的 ObjectListView 控件。您可以从http://objectlistview.sourceforge.net下载它。

基本实现

  1. 用 ObjectListView 替换您的常规 ListView 控件。
  2. 创建一个包含要在 ObjectListView 上显示的字段的类。
    这是必要的,因为 OLV 不直接使用ListViewItem来显示元素。
  3. 在 OLV 中创建列(在代码中)并指定将为该列显示的属性(来自步骤 2)。
  4. ImageGetter要显示图像的列(通常是第一列)的属性设置为返回 的函数Imagestring或者int与要为项目显示的图像相对应的函数。
    如果函数返回stringor int,则 OLV 中的图像LargeImageListorSmallImageList将为项目显示。
  5. 创建Enumerable要显示的项目的集合,并使用SetObjectsorAddObjects方法将其附加到 OLV。
  6. 在用于返回要为项目显示的图像的函数中,使用 GDI(或任何您想要的方式)渲染图像并将其返回以在 OLV 中显示。
于 2012-08-04T08:49:46.397 回答
0

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

在此处输入图像描述

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

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

于 2012-08-04T00:39:36.380 回答