C # Winforms AutoScaleMode DPI и кнопки панели инструментов

Моему приложению WinForms (C # .NET 4.6) требуется AutoScaleMode = Dpi для других функций. Это отлично работает для 99% моих клиентов. Обычно они используют масштабирование дисплея Windows на 100%, 125% или даже% 150.

Однако у меня есть клиентская установка с экраном 3840x2160 с масштабированием 250%. В этой системе мои кнопки на панели инструментов выглядят очень странно:

введите описание изображения здесь

Кнопки панели инструментов, кажется, увеличиваются в высоту с масштабированием системы, но они не растут в ширину. Это создает искаженный вид с крошечными изображениями кнопок. Как я могу заставить кнопки панели инструментов масштабироваться в обоих направлениях, а также соответственно масштабировать изображения кнопок?


person Mark Malburg    schedule 17.03.2021    source источник
comment
Вы видели stackoverflow.com/questions/13228185/ или любые другие сообщения по этой теме?   -  person rene    schedule 17.03.2021
comment
Спасибо @rene Я там посмотрел. Кажется, это не касается панели инструментов. (Если я чего-то не упускаю.)   -  person Mark Malburg    schedule 17.03.2021
comment
Итак, у вас есть файл манифеста с таким содержанием? И все советы здесь: stackoverflow.com/a/4076259/578411?   -  person rene    schedule 17.03.2021
comment
Вы говорите, что установили AutoScaleMode = Dpi, но не упомянули, действительно ли ваше приложение является DpiAware и, в этом случае, какой режим DpiAwareness вы выбрали. Обратите внимание, что ToolStrip масштабируется с использованием размера шрифта. Вы можете адаптировать свою кнопку (поскольку там нет текста), установив AutoSize = false, а затем установив размер, который совпадает с высотой ToolStrip. Можно добавить дополнительные настройки, чтобы масштабировать изображение разными способами. - ToolStrip - один из тех элементов управления, которые могут отказаться от улучшений High-Dpi с помощью специальной настройки в app.config, если это необходимо.   -  person Jimi    schedule 17.03.2021
comment
См. Также ScaleBitmapLogicalToDevice (), Scale () и другие. - Для использования последних улучшений High-Dpi вам потребуется как минимум .Net Framework 4.7. Я предлагаю ориентироваться на .Net FW 4.8 (во многих ситуациях ведет себя лучше). Или перейти на .Net 5, если возможно.   -  person Jimi    schedule 17.03.2021
comment
stackoverflow.com/questions/3432025/   -  person Hans Passant    schedule 18.03.2021
comment
stackoverflow.com/questions/33518339/   -  person Hans Passant    schedule 18.03.2021