На дисплеях с глубиной цвета 16 бит (включая сеансы удаленного рабочего стола, установленными на 16-битный цвет) приложения Windows Forms используют версию с низкой глубиной цвета назначенного значка заголовка (Form.Icon
). Однако приложения WPF и проводник Windows используют 24-битную глубину цвета, если она существует.
Я впервые увидел это в приложении Windows Forms, над которым я сейчас работаю. Значок, который я использовал, имел 4-битные, 24-битные и 32-битные варианты. На 16-битных дисплеях Windows Forms использовала уродливую 4-битную версию в строке заголовка вместо симпатичной 24- или 32-разрядной версии.
Чтобы проверить и проиллюстрировать поведение, я создал тестовый значок с явно разными проектами для каждого размера и цветового формата. Я включил 4-битные, 8-битные, 24-битные и 32-битные варианты.
Ниже приведены результаты как на 32-битных, так и на 16-битных дисплеях:
На 32-битных дисплеях все хорошо:
Проводник Windows:
Приложение WPF:
Приложение Windows Forms:
В 16-битных дисплеях Windows Forms отображает вариант с более низкой глубиной цвета, чем WPF или проводник Windows:
Проводник Windows:
Приложение WPF:
Приложение Windows Forms:
На 16-разрядных дисплеях Windows Explorer и WPF используют 24-битный формат, но Windows Forms этого не делает. В этом случае он использовал 8-битный формат. Мой реальный значок приложения не имел 8-битного варианта (но я собираюсь сделать его сейчас!), Поэтому Windows Forms использовали 4-битный вариант.
Как я могу заставить приложение Windows Forms отображать 24-битную версию значка в строке заголовка на 16-битном дисплее?