Tiwari A K Ответов: 3

Автоматическая настройка размера формы windows в соответствии с разрешением экрана


Здравствуйте Друзья,

Я разрабатываю настольное приложение с использованием visual studio 2008. У меня есть некоторые формы без границ. я добавляю в свою форму несколько picturebox, button и label. Я хочу настроить размер формы (также соответствующий размер элемента управления) в соответствии с различным разрешением экрана (соотношение экранов 3:2, 4:3, 5:3, 5:4, 8:5, 16:9 и 17:9) . как это можно сделать. Пожалуйста, помогите мне.

Заранее спасибо

Ravi Sant

некоторые полезные чтения: http://www.vcskicks.com/maintain-aspect-ratio.php

sswapniljadhav

Макет таблицы может быть полезен для вас в windows forms, если у вас есть выбор в выборе технологии, то перейдите к приложению WPF, WPF более гибок.

3 Ответов

Рейтинг:
2

thatraja

Вот старый похожий хороший вопрос с ответами

Как настроить экран приложения win form в соответствии с системным разрешением[^]


Рейтинг:
0

OriginalGriff

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

Если вам нужно это сделать, то вам нужно перейти от стандартных WinForms к WPF - он может справиться с этим очень хорошо!


Aravindba

Hai is it possible to move controls based on background images in WPF ? Actually what i did now ,i will declare only 2 resolutions to customer,if user try to open in other resolution it will show message,i will design one(1024X768) resolution and store x and y axis for controls and store in databse with unique id as resolution and design second(1280X1024) resolution and store x and y axis for controls and store in database with unique id as resolution.if user open 1024x768 then it retrieve x and y axis and send to controls top and height properties same as second resolution .bcz i have background image for whole form and based on that image i need to fix button on its place ,so once form is minimize or maximize or open in different resolutions is it possible to fix buttons on its place based on background image ? bcz in background image i will specify the place where to be button need to fix ,is it any way ? or need to capture x and y axis in database and retrieve x and y axis and append in controls top and height?

Если он не основан на фоновом изображении ,то ок док или якорь собственности,пожалуйста, ответьте мне

OriginalGriff

Если у вас есть два "фиксированных" разрешения, то я бы сделал это так, чтобы иметь две отдельные формы:
поместите весь код обработки в третий класс и создайте две отдельные формы. Затем решите в program.cs, какое разрешение использовать, и отобразите соответствующую форму.

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

Рейтинг:
0

Dipanki99

Использовать свойства Dock и Anchor. Ниже приведена хорошая статья. Обратите внимание, что они будут обрабатывать изменения при максимизации/минимизации. Это немного отличается от того, что если разрешение экрана изменится, но это будет по той же идее.

http://www.techrepublic.com/article/manage-winform-controls-using-the-anchor-and-dock-properties/#.


johannesnestler

Я не знаю, кто отклонил ваше "решение", но это тоже, на мой взгляд, правильный путь. В то время я много занимался программированием windows-форм (также с VS 2005-2008), и иногда возникала идея "масштабирования" (от менее опытных разработчиков). Динамический макет (как вы рекомендуете) - это путь - все остальные "автоматические" масштабирования - это кошмар для использования и тестирования, и они не дают нужных вам результатов (в WPF это другая история из-за векторной графики - так что такое масштабирование, скорее всего, сработает-но даже с WPF это не очень хорошая идея... соотношение сторон differnet всегда будет компромиссом-экранное пространство будет потрачено впустую)