WinForms应用程序在16位显示器上使用低质量标题栏图标

时间:2012-10-10 19:35:05

标签: .net winforms icons color-depth

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

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

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

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

在32位显示器上,一切都很好:

Windows资源管理器:

Windows Explorer, 32-bit display

WPF申请

WPF Application, 32-bit display

Windows窗体应用程序:

Windows Forms Application, 32-bit display

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

Windows资源管理器:

Windows Explorer, 16-bit display

WPF申请

WPF Application, 16-bit display

Windows窗体应用程序:

Windows Forms Application, 16-bit display

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

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

1 个答案:

答案 0 :(得分:1)

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

所以,你可以尝试伪造图片的“位”字段(尝试使用一些照片编辑软件),认为当它实际为24时它是16位。这是可能的,我已经设法在几年前做到了,但我不记得(对不起)。

我想这是你应该尝试解决问题的方法。

祝你好运!