Проблемы WPF DPI
Я разработал приложение, которое отлично смотрится на моем компьютере, но когда я устанавливаю его на другие компьютеры с различными разрешениями и настройками DPI, оно выглядит ужасно. Элементы управления накладываются друг на друга, и это просто ужасно. Есть ли у кого-нибудь предложения, как этого избежать?
1 ответ:
Для Windows нет способа узнать собственное значение DPI (точек на дюйм) вашего экрана, поскольку физически экран не может сообщить его компьютеру. Это означает, что многие люди будут иметь настройки DPI, которые не совпадают с их мониторами native DPI.
Итак-как это вписывается во всю"WPF used DIPs (Device independent pixels)" -дискуссию? Ну, для того, чтобы WPF вычислял, насколько велик провал, ему требуется 1 Информация и 1 инвариант: он должен знать разрешение вы работаете (не проблема), и он должен для вас установить экран на его родной DPI. Если ваш экран не настроен на собственный DPI, пиксели могут быть больше или меньше, чем они должны быть, по сравнению с физическим размером экрана.
Это довольно трудно объяснить на самом деле, посмотрите на эти блоги посты: http://www.odewit.net/ArticleContent.aspx?id=WpfDpiScaling&lang=en&format=html http://blogs.microsoft.co.il/blogs/tomershamam/archive/2007/11/30/wpf-is-dpi-depended.aspx http://www.wpflearningexperience.com/?p=41 (вниз прямо сейчас : ()
В общем, вы должны сделать свой пользовательский интерфейс масштабируемым с помощью таких вещей, как полосы прокрутки, элементы управления подкачкой и тому подобное, чтобы избежать дублирования :)