Разработка форм для работы с различными разрешениями и пропорциями в Windows CE - PullRequest
6 голосов
/ 20 января 2010

У меня есть приложение .NET 2.0, которое работает на Compact Framework. Он имеет множество различных форм, которые изначально были разработаны для работы на определенном устройстве с определенным разрешением экрана. Теперь я хочу, чтобы это приложение работало на некоторых других устройствах с очень разными разрешениями экрана (некоторые имеют совершенно противоположные пропорции, где экран теперь выше, чем он широкий). У меня вопрос: как мне изменить свои формы, чтобы они хорошо выглядели на других экранах?

Это немного отличается от проектирования форм на полном каркасе, поскольку мне приходится проектировать эти формы так, чтобы они занимали весь экран, так как экраны очень маленькие. Я думал о создании отдельных форм для каждого типа ориентации экрана (например, MyForm_Wide.cs, MyForm_Tall.cs и т. Д.). Я хотел бы иметь возможность повторно использовать сгенерированный не дизайнером код, который содержит много бизнес-логики, связанной с элементами управления пользовательского интерфейса. Может быть, я мог бы как-то использовать частичные классы, чтобы это произошло (например, MyForm.cs каким-то образом компилируется в MyForm_Wide.Designer.cs и т. Д.). Я действительно хотел бы избежать специально скомпилированных версий для каждой ориентации экрана. Еще один подход, о котором я подумал, - попытаться переставить некоторые элементы управления во время выполнения на основе определенного размера экрана.

Что вы, ребята, думаете?

Ответы [ 5 ]

1 голос
/ 22 января 2010

Думаю, я понял, что хочу сделать. По какой-то причине даже на моих устройствах с высоким разрешением DPI по-прежнему отображается как 96 в соответствии с WinForms API, поэтому автоматическое масштабирование ничего не дает. Вместо этого, если я вручную вызываю Scale на своих элементах управления, я получаю их масштабирование именно так, как я хочу. Теперь, это не полностью решает мою проблему в сценариях, где я не хочу выполнять масштабирование, но я хочу реорганизовать свои элементы управления, если экран имеет соотношение сторон, отличное от того, для которого я изначально проектировал. В этом случае я думаю, что я собираюсь рассмотреть использование различных панелей макета (например, FlowLayoutPanel и TableLayoutPanel), чтобы, надеюсь, правильно организовать элементы управления.

Надеюсь, это поможет любому будущему Гуглеру ...

1 голос
/ 20 января 2010

Поскольку дизайнеры c # очень «ориентированы на пиксели», простой способ конвертировать ваши формы не существует.

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

Конечно, оригинальные дизайнеры c # не сильно помогут в разработке этих гибких форм, управляемых макетом.

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

1 голос
/ 20 января 2010

Вам, вероятно, следует установить для свойства основных форм AutoScaleMode значение DPI.

Тогда, это вопрос использования якорей и закрепления ваших конкретных элементов управления на формах. Если вы сделаете это таким образом, компактная структура сохранит вещи там, где вы думали, что они будут.

Также можно изменить свойство «Форм-фактор» формы, чтобы увидеть, как ваша форма будет выглядеть на мобильных устройствах разных размеров и форм.

1 голос
/ 20 января 2010

Мы используем инфраструктуру Orientation Aware Control от Clarius. Это решает проблему не только форм-фактора, но и на устройствах, которые его поддерживают, смену ориентации (поворот экрана).

Возможно, наиболее отличительным аспектом разработки мобильных приложений от традиционных разработок для настольных компьютеров является необходимость поддержки постоянно растущего диапазона форм-факторов устройств.

Для опытных разработчиков мобильных приложений не новость, что разработка мобильных приложений, поддерживающих несколько форм-факторов, разрешений и ориентаций экрана, является нетривиальной, трудоемкой и сложной задачей. Также очевидно, что встроенных функций стыковки и привязки в .NET Compact Framework v2.0 далеко не достаточно.

Orientation Aware Control позволяет создавать и кодировать один элемент управления или форму с несколькими макетами или оболочками, которые автоматически применяются во время выполнения (и во время разработки) в соответствии с доступным форм-фактором, разрешением и ориентацией. Его выдающиеся формы Visual Studio и интеграция с дизайнером пользовательских элементов управления и поведение адаптивного пользовательского интерфейса с нулевым кодом делают Orientation Aware Control незаменимым помощником в любом мобильном магазине, ориентированном на несколько устройств, что повышает производительность, необходимую для развития вашего бизнеса. *

0 голосов
/ 02 февраля 2010

Свойство «Авторазмер» на ярлыках портится при переключении между форм-факторами - кстати, поэтому я оставляю для него значение false.

...