Имеется приложение, которое отлажено на работы на FHD. При запуске на мониторе 4K иконки (32x32) слишком мелкие и картинки вставленные в диалоговые окна тоже.
Какие варианты решения данной проблемы есть? Делать новые иконки и картинки и подгружать в зависимости от разрешения или все-таки есть вариант, когда они автоматически будут растягиваться хотя бы с потерей качества?
Здравствуйте, ahaos, Вы писали:
A>Имеется приложение, которое отлажено на работы на FHD. При запуске на мониторе 4K иконки (32x32) слишком мелкие и картинки вставленные в диалоговые окна тоже. A>Какие варианты решения данной проблемы есть? Делать новые иконки и картинки и подгружать в зависимости от разрешения или все-таки есть вариант, когда они автоматически будут растягиваться хотя бы с потерей качества?
Если при создании ImageList указывать размер изображения с учетом DPI окна (GetDpiForWindow), то иконки будут растягиваться автоматически, но с некоторым замыливанием.
Я не знаю, что за картинки в диалогах, но если речь о контролах типа ListView, TreeView и т.п., то для них это работает.
Это в простом случае, если мы полагаем, что во время работы программы DPI менять не будут и перетаскивать окна между мониторами с разными DPI также не будут.
Здравствуйте, ahaos, Вы писали:
A>Имеется приложение, которое отлажено на работы на FHD. При запуске на мониторе 4K иконки (32x32) слишком мелкие и картинки вставленные в диалоговые окна тоже. A>Какие варианты решения данной проблемы есть? Делать новые иконки и картинки и подгружать в зависимости от разрешения или все-таки есть вариант, когда они автоматически будут растягиваться хотя бы с потерей качества?
Здесь следует пробовать подходы с использованием векторной графики для изображений — SVG, EMF и т.д.
Если все сделать правильно, то будет без разницы, какое разрешение и DPI выставлено для дисплея.
Кстати, Direct2D в последних версиях Windows уже поддерживает SVG. Либо можно попробовать сторонние библиотеки для конвертации его в какой-нибудь PNG/JPEG и
потом выводить на экран.
Здравствуйте, qaz77, Вы писали:
Q>Здравствуйте, ahaos, Вы писали:
A>>Имеется приложение, которое отлажено на работы на FHD. При запуске на мониторе 4K иконки (32x32) слишком мелкие и картинки вставленные в диалоговые окна тоже. A>>Какие варианты решения данной проблемы есть? Делать новые иконки и картинки и подгружать в зависимости от разрешения или все-таки есть вариант, когда они автоматически будут растягиваться хотя бы с потерей качества?
Q>Если при создании ImageList указывать размер изображения с учетом DPI окна (GetDpiForWindow), то иконки будут растягиваться автоматически, но с некоторым замыливанием. Q>Я не знаю, что за картинки в диалогах, но если речь о контролах типа ListView, TreeView и т.п., то для них это работает.
Q>Это в простом случае, если мы полагаем, что во время работы программы DPI менять не будут и перетаскивать окна между мониторами с разными DPI также не будут.
Проблема решилась просто. Я отключил поддержку высокого DPI в настройках проекта. И обе проблемы разом решились. Теперь и иконки в панелях инструментов как я и хотел и картинки в диалогах как и хотелось.
Здравствуйте, ahaos, Вы писали:
A>Имеется приложение, которое отлажено на работы на FHD. При запуске на мониторе 4K иконки (32x32) слишком мелкие и картинки вставленные в диалоговые окна тоже. A>Какие варианты решения данной проблемы есть? Делать новые иконки и картинки и подгружать в зависимости от разрешения или все-таки есть вариант, когда они автоматически будут растягиваться хотя бы с потерей качества?
Можно делать изображения под каждый масштаб от 100 до 200% и будет наилучшее качество. Я сделал отдельно только для 200% переключение иконок вручную, в зависимости от dpi ещё 10 лет назад. Смотрится неплохо. Отключать поддержку dpi не надо, окно будет размытое.