Приложение WinForms использует низкокачественную иконку заголовка на 16-битном дисплее
На дисплеях с глубиной цвета 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:
![Windows Explorer, 32-bit display]()
Приложение WPF:
![WPF Application, 32-bit display]()
Приложение Windows Forms:
![Windows Forms Application, 32-bit display]()
В 16-битных дисплеях Windows Forms отображает вариант с более низкой глубиной цвета, чем WPF или проводник Windows:
Проводник Windows:
![Windows Explorer, 16-bit display]()
Приложение WPF:
![WPF Application, 16-bit display]()
Приложение Windows Forms:
![Windows Forms Application, 16-bit display]()
На 16-разрядных дисплеях Windows Explorer и WPF используют 24-битный формат, но Windows Forms этого не делает. В этом случае он использовал 8-битный формат. Мой реальный значок приложения не имел 8-битного варианта (но я собираюсь сделать его сейчас!), Поэтому Windows Forms использовали 4-битный вариант.
Как я могу заставить приложение Windows Forms отображать 24-битную версию значка в строке заголовка на 16-битном дисплее?
Ответы
Ответ 1
К сожалению, нет способа отображения 24-битного изображения на 16-битных системах. Однако вы можете придумать трюк, который адаптирует ваше приложение к системе, в которой он работает.
Итак, вы можете попытаться подделать "бит" поле изображения (попробуйте использовать какое-то программное обеспечение для редактирования фотографий), считая его 16-битным, когда это на самом деле 24. Возможно, мне удалось это сделать несколько лет назад, но я не могу вспомнить, как (извините).
Я предполагаю, что вам следует попытаться решить вашу проблему.
Удачи!