12

在具有 16 位颜色深度的显示器(包括设置为 16 位颜色的远程桌面会话)上,Windows 窗体应用程序使用分配的标题栏图标 ( Form.Icon) 的低颜色深度版本。但是,WPF 应用程序和 Windows 资源管理器使用 24 位颜色深度(如果存在)。

我首先在我目前正在处理的 Windows 窗体应用程序中看到了这一点。我使用的图标定义了 4 位、24 位和 32 位变体。在 16 位显示器上,Windows 窗体在标题栏中使用丑陋的 4 位版本,而不是好看的 24 位或 32 位版本。

为了测试和说明行为,我为每种尺寸和颜色格式创建了一个具有明显不同设计的测试图标。我包括了 4 位、8 位、24 位和 32 位变体。

以下是 32 位和 16 位显示器上的结果:

在 32 位显示器上,一切正常:

Windows资源管理器:

Windows 资源管理器,32 位显示

WPF 应用程序:

WPF 应用程序,32 位显示

Windows 窗体应用程序:

Windows 窗体应用程序,32 位显示

在 16 位显示器上,Windows 窗体显示的图标变体比 WPF 或 Windows 资源管理器的颜色深度更低:

Windows资源管理器:

Windows 资源管理器,16 位显示器

WPF 应用程序:

WPF 应用程序,16 位显示

Windows 窗体应用程序:

Windows 窗体应用程序,16 位显示

在 16 位显示器上,Windows 资源管理器和 WPF 使用 24 位格式,但 Windows 窗体不使用。在这种情况下,它使用 8 位格式。我真正的应用程序图标没有 8 位变体(但我现在要做一个!),所以 Windows 窗体使用 4 位变体。

如何让我的 Windows 窗体应用程序在 16 位显示器的标题栏中显示 24 位版本的图标?

4

1 回答 1

1

不幸的是,您无法在 16 位系统上显示 24 位图像。但是,您可以想出一个技巧,使您的应用程序适应它所运行的系统。

因此,您可以尝试伪造图片的“位”字段(尝试使用一些照片编辑软件),使其认为它是 16 位,而实际上是 24 位。这是可能的,我几年前就设法做到了,但我不能记住如何(对不起)。

我想这是您应该尝试解决问题的方式。

祝你好运!

于 2012-11-06T18:43:59.517 回答