2013-06-28 4 views
0

Я разрабатываю и внедряю GUI для специального применения.Как создать графический интерфейс для разных мониторов?

Я использую WPF на C#,

Я намерен применить это приложение для различных разрешений монитора (1366х768 или 1920х1080, ...).

Но у меня нет опыта для этого. Я не знаю, как реализовать гибкий графический интерфейс, который может отображаться на любом разрешении.

Кто-то может дать мне идеи?

+2

Да WPF является лучшим для такие вещи. Вы не должны точно устанавливать высоту и ширину столбцов. Установите его в положение «Авто» или «*». Тогда, возможно, вам нужно пройти основы WPF. – Dilshod

+0

@Richard Ev: Я думал об использовании процента для размера или использовал Auto, * как упоминал Дилшод, но я хочу получить больше идеи, прежде чем начать делать это. – TTGroup

+0

Спасибо за ваше предложение, Дилшод! – TTGroup

ответ

4

1 - Напишите свой XAML вручную и не используйте конструктор Visual Studio.

  • Дизайнер создает пользовательские интерфейсы фиксированной позиции фиксированного размера (ala winforms) и не будет полезен, если вам нужна независимость от разрешения.

2 - Не исправляйте размеры и положения элементов пользовательского интерфейса самостоятельно.

  • Не делайте таких вещей, как <TextBox Width="56" Margin="50,30,10,5"/>. Вместо этого разместите свой пользовательский интерфейс в разрешенных независимых макетах, таких как Grid или DockPanel. Используйте размеры звезд в сетках.

Edit: Добавление комментария @ Вив, который так важен, я решил сделать это часть ответа:

Как и все остальное в программировании, принять точку 1 с зерном соли. Не делайте это другим заявлением, например, «В MVVM ЛЮБОЙ код в кодировке неправильный». Использование конструктора (VS/Blend) для таких вещей, как создание шаблонов, изменение раскадровки, VSM, импорт файлов Illustrator/Photoshop вполне разумно. Знайте, с чем имеете дело, и даже если в таких случаях вы получаете постоянные размеры, настройте xaml соответственно, чтобы избавиться от него, чем полностью пренебрегать каждым его аспектом.

+0

Это здорово! Спасибо, HighCore! – TTGroup

+0

Написание XAML вручную имеет много преимуществ, особенно в VS2012, где [XAML-дизайнер (XDesProc) периодически блокируется] (http://stackoverflow.com/questions/13653835/vs2012-xdesproc-hangs-when-xaml-file -is открыт/14483094 # comment23129670_14483094). Поначалу это выглядит как шаг назад (перетаскивание UI-разработки было большим успехом, когда оно появилось), но это странно проще и продуктивнее WinForms даже после того, как вы привыкнете к XAML. –

+0

@DanBryant Каждый дизайнер пользовательского интерфейса, который я когда-либо использовал, был чем-то, на что нельзя положиться полностью, будь то WPF, winforms, ASP, простой HTML (с выбором редакторов), приложениями Java swing и т. Д. Они могут быть полезны в случайных случаях, чтобы немного поработать, но практически не могут полностью полагаться на них. Врожденная сложность дизайна пользовательского интерфейса слишком сложна для дизайнеров в целом. – Servy

2

Во-первых, это зависит в некоторой степени от характера приложения, однако указанные вами разрешения не являются МАССИВНЫМИ разными в великой схеме вещей (если вы сравнивали 640x480 и 2560x1600, тогда у вас могут быть и более серьезные проблемы!), поэтому, если вы выберете правильные компоненты, они сами организуются (или более точно, ОС организует их за кулисами) для вас.

Тот факт, что вы выбрали WPF, означает, что у вас есть огромная гибкость в отношении того, как будут отображаться элементы пользовательского интерфейса, поскольку WPF - это векторный движок рендеринга, в отличие от Windows Forms (GDI/GDI +), который был DPI/на основе пикселя.

Но давайте углубимся в это глубже, не так ли?

Скажите, например, что вы разрабатываете свой пользовательский интерфейс в Windows Forms, и для этого требуется ToolStrip в форме, а затем все 1000 кнопок ToolStrip. Хорошо, на массивном мониторе вы можете просто увидеть все 1000 кнопок, но на вашем стандартном мониторе 1080p болота вы можете увидеть только 30 из них; так что же происходит с остальными? - Windows поместит их в подменю для вас, в конце ToolStrip, чтобы вы могли получить к ним доступ, даже если они не находятся в основном (видимом) разделе ToolStrip. Я почти уверен, что тот же принцип применим к WPF, потому что вы, вероятно, будете иметь еще больший контроль над тем, как выглядят вещи и появляются!

Великой вещью, которую WPF привнес в таблицу посредством векторной визуализации, была независимость от разрешения. Это дает вам гибкость в выборе того, хотите ли вы, чтобы ваши элементы отображались как «фиксированный» размер (по любому разрешению, всегда будут использовать одни и те же пиксели) или позволить динамически изменять размер элемента в соответствии с разрешением (на низкое разрешение, которое элемент будет отображать с использованием меньшего количества пикселей, но будет страдать с меньшим качеством или с высоким разрешением, будет отображать с использованием большего количества пикселей и будет иметь гораздо более высокое качество).

Для начала, вот свободный WPF книгу из Syncfusion (серьезно, проверить их, они отдают совсем немного свободного, достойного материала!)

WPF Succinctly

+0

Спасибо за ваш ответ! – TTGroup