Member 9983063 Ответов: 3

Как вписать приложение C# в каждое разрешение


Привет, ребята! я хочу знать, как вписать приложение c# в каждое разрешение, мое приложение c#, открытое на моем компьютере, идеально, но когда я устанавливаю это приложение на свою клиентскую машину, это показывает половину приложения.

Что я уже пробовал:

этот.WindowState = FormWindowState. Maximized;
этот.Location = новая точка(0, 0);
этот.Размер = Экран.Первичный экран.WorkingArea.Размер;

Philippe Mori

Вы всегда должны проектировать форму так, чтобы она соответствовала желаемому минимальному размеру (скажем, 1000x700 со 100% масштабированием шрифта).

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

Обычно масштабирование должно основываться на размере шрифта для большинства приложений.

3 Ответов

Рейтинг:
24

OriginalGriff

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

К сожалению, я должен сказать, что если вы не создадите свое приложение с самого начала для поддержки совершенно разных размеров экрана, вы мало что сможете сделать автоматически для его поддержки. А проектирование вашего приложения для работы означает выполнение чего-то вроде Visual Studio: закрепляемые "панели инструментов" вокруг внешней стороны большей центральной рабочей области. Если вы только что заполнили дисплей элементами управления, то, вероятно, у вас на руках серьезный редизайн.


Member 9983063

Сэр, возможно ли это, если разрешение экрана моего клиента составляет 1920*1080, как и мое разрешение экрана, так что мое приложение идеально подходит

Рейтинг:
14

BillWoodruff

Если ваше разрешение экрана такое же, как у вашего клиента, и вы оба используете мониторы с одинаковым стандартным соотношением сторон (как правило, сегодня 16:9 для настольных мониторов) ... у клиента не должно быть никаких проблем.

Добро пожаловать в Великую головоломку работы с различными размерами устройств отображения, разрешением экрана и соотношением сторон: [^].

Пример того, как это становится сложным: разрешение экрана, которое я использую ... из-за проблем со зрением мне нужно видеть вещи большими ... это 1360/768 (соотношение 683:384), которое не соответствует точно 16:9 или 16:10 ... или 4:3. Причины, по которым это разрешение стало часто использоваться несколько лет назад, заключались в эффективности производства, вычислительной эффективности, ограничениях 8-битных устройств памяти экрана и потребительском спросе на более широкие экраны, чем 1024/768.

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

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

Если вы используете WPF, у вас есть преимущество полностью векторного графического движка ... однако это не гарантирует, что ваше приложение будет выглядеть "идеально" при любом произвольном размере ! Графический движок Windows Forms GDI+ гораздо более ограничен.

В любом случае, шрифты меньшего размера, чем #14, всегда будут выглядеть лучше всего на определенных раздельный размеры; это потому, что они "намекаются" так, что корректировка пикселей производится для оптимизации читабельности экрана. Пытаться масштабировать шрифты-не очень хорошая идея. Таким образом, для шрифтов небольших размеров вам нужно определить эти дискретные размеры и "прыгать" между ними, а не масштабировать.

Обратите внимание, что происходит, когда в проекте WinForms вы выбираете форму и устанавливаете ее свойство шрифта в Consolas #10 ... в файле Designer. cs вы увидите следующее:

this.Font = new System.Drawing.Font("Consolas", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
Если бы вы выбрали Consolas #9, значение было бы #9; это значение #10.2 является результатом поиска Windows оптимального размера, при котором намек будет наиболее эффективным.

Я бы по крайней мере рассматривать попытка сделать эффективный внешний вид пользовательского интерфейса на 1024x768, 1360x768 и 1920x1080.

И, конечно же, изучите и попробуйте другие идеи в решениях/комментариях, предложенных вам здесь OriginalGriff и Phillippe Mori !

Я предлагаю вам ознакомиться с этими различными областями / границами свойств приложения WinForm и формы:
private Rectangle 
    screenBounds,
    screenWorkingArea,

    formDesktopBounds,
    formBounds,
    formClient,
    formDisplay;

private GetScreenFormInfo()
{
    var priScreen = Screen.PrimaryScreen;

    screenBounds = priScreen.Bounds;
    screenWorkingArea = priScreen.WorkingArea;

    formBounds = Bounds;
    formDesktopBounds = DesktopBounds;
    formClient = ClientRectangle;
    formDisplay = DisplayRectangle;
}


Member 9983063

как я могу получить screenforminfo ()?

BillWoodruff

Используйте пример кода, показанный в этом решении; поместите его в тестовый проект, запустите его. Вызовите метод

Теперь изучите значения различных полей прямоугольника.

Подумайте о том, что означают различия (или отсутствие различий) между этими ценностями, а затем начните планировать, как использовать это значение.

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

Рейтинг:
1

pt1401

Есть решения, но, насколько мне известно, только коммерческие. Взгляните на Larcom и молодых ограничителю[^]. В рекламном объявлении говорится, что это VB.Только сеть, но она работает для любого .Чистый язык. Мы использовали его в предыдущей компании для интерфейсов EPOS, и он хорошо работал.


Member 9983063

Сэр, возможно ли это, если разрешение экрана моего клиента составляет 1920*1080, как и мое разрешение экрана, так что мое приложение идеально подходит