Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
9 / 7 / 2
Регистрация: 06.03.2012
Сообщений: 686

Масштабирование формы проекта под разрешение экрана

27.03.2021, 10:11. Показов 3867. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Узнаю расширение экрана через такой код.
VB.NET
1
2
 x = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width
 y = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height
Для различных расширений экрана необходимо подгонять размеры формы и контролов.
И под это расширение указывать размеры контролов и местоположение их на форме. Но если много контролов - то и таблица большая получается. Как можно это сделать по другому? Если это возможно. Есть ли какие то рекомендуемые размеры формы на полный экран под расширения экрана?
Прошу помощи.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.03.2021, 10:11
Ответы с готовыми решениями:

Адаптация размера формы под разрешение экрана
Как мне сделать, чтобы форма сама могла под любое расширения встать? Просто приложение разрабатывал в расширении 1024х1248, а когда...

Масштабирование под разные разрешения экрана
Доброго всем времени суток. Подавляющее количество программ имеют адаптацию под разные разрешения экрана. У меня же контролы,...

Как оптимизировать отображение программы под разрешение экрана
Всем Доброго времени суток! Сделал тестовую программу для детишек. Проблема в том, что на разных компах она выглядит по-разному. Наверное...

28
 Аватар для Vitachok
18 / 18 / 2
Регистрация: 30.09.2016
Сообщений: 109
27.03.2021, 22:59
Студворк — интернет-сервис помощи студентам
Kulma,
Тупить будет ос страшной силой , пока всё отрисует
Эксперементаторы
VB.NET
1
2
'Ускоряем отображение элементов в TableLayoutPanel1
        GetType(TableLayoutPanel).GetProperty("DoubleBuffered", Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance).SetValue(TableLayoutPanel1, True, Nothing)
0
2298 / 1614 / 400
Регистрация: 26.06.2017
Сообщений: 4,780
Записей в блоге: 1
28.03.2021, 08:46
Цитата Сообщение от vlad56 Посмотреть сообщение
И когда размер формы увеличивается он вылазит за форму.
Замените в классе PieChart метод OnSizeChanged на этот и не забудьте про переменную D.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    Private D As Integer 'Диаметр изображения
 
    Protected Overrides Sub OnSizeChanged(ByVal e As EventArgs)
        MyBase.OnSizeChanged(e)
        'Сохранение пропорций
        If Width > D Or Height > D Then 'произошло увеличение размера
            If Width > Height Then
                Height = Width
            ElseIf Height > Width Then
                Width = Height
            End If
        Else 'произошло уменьшение размера
            If Width > Height Then
                Width = Height
            ElseIf Height > Width Then
                Height = Width
            End If
        End If
        D = Width 'сохраним новый размер
    End Sub
Вообще данный класс надо дорабатывать, т.к. якорение (изменение Anchor) приводит к хаотичному его поведению.
1
9 / 7 / 2
Регистрация: 06.03.2012
Сообщений: 686
28.03.2021, 13:19  [ТС]
Не работает этот код. Всё равно PieChart при увеличении размеров формы вылазит за пределы формы. А надо чтобы был постоянный размер, а место было по центру.
0
9 / 7 / 2
Регистрация: 06.03.2012
Сообщений: 686
28.03.2021, 13:22  [ТС]
Вот скрин
0
2298 / 1614 / 400
Регистрация: 26.06.2017
Сообщений: 4,780
Записей в блоге: 1
28.03.2021, 13:44
vlad56, проверяйте якорение элемента, код проверен и работает на увеличение и уменьшение контрола. Повторюсь, что центровки при якорении без дополнительного кода в классе PieChart не получится.
0
9 / 7 / 2
Регистрация: 06.03.2012
Сообщений: 686
28.03.2021, 14:39  [ТС]
В коде как раз допущена ошибка. Если почитать внимательно то ошибку видно. Надо менять местами 8 на 10 и 14 на 16 строки. И anchor подобрал теперь всё работает. Теперь как называется событие если я мышкой прикасаюсь к форме и вместо указателя мышки появляется двойная стрелка. По этому событию надо TabControl visible делать false. И тогда можно уменьшать будет мышкой форму. Но не знаю как это событие называется. Прошу помощи.

Добавлено через 12 минут
Эти события называются MouseEnter или MouseLeave. Но как загнать код под эти события в программу не знаю. Прошу помощи.

Добавлено через 21 минуту
Вот получил то что хотел. Вот код. Но вот как теперь после того как изменил размеры формы снова сделать TabControl видимым? Прошу помощи.
VB.NET
1
2
3
4
5
6
7
8
Private Sub Me_MouseEnter(sender As Object, e As EventArgs) Handles Me.MouseEnter
        TabControl1.Visible = False
    End Sub
 
    Private Sub Me_MouseLeave(sender As Object, e As EventArgs) _
       Handles Me.MouseLeave
        TabControl1.Visible = False
    End Sub
Добавлено через 11 минут
Добавил ещё чтобы TabControl стал видимым, но получилось бог знает что. Как же правильно сделать работу с изменением формы мышкой? Прошу помощи.
VB.NET
1
2
3
4
Private Sub Me_MouseUp(sender As Object, e As EventArgs) _
       Handles Me.MouseLeave
        TabControl1.Visible = True
    End Sub
0
2298 / 1614 / 400
Регистрация: 26.06.2017
Сообщений: 4,780
Записей в блоге: 1
28.03.2021, 14:56
Цитата Сообщение от vlad56 Посмотреть сообщение
Надо менять местами 8 на 10 и 14 на 16 строки.
Ваше высказывание не верно. Подумайте ещё.
0
9 / 7 / 2
Регистрация: 06.03.2012
Сообщений: 686
28.03.2021, 15:02  [ТС]
Я уже изменил и всё стало работать как надо.
0
9 / 7 / 2
Регистрация: 06.03.2012
Сообщений: 686
28.03.2021, 15:21  [ТС]
На 6 строке написано произошло увеличение размера, а мы в 8 строке меньшей высоте присваиваем больший размер ширины. А надо наоборот. В 12 строке написано произошло уменьшение размера, а мы в 14 строке большей ширине присваиваем меньшее значение высоты и наоборот.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    Private D As Integer 'Диаметр изображения
 
    Protected Overrides Sub OnSizeChanged(ByVal e As EventArgs)
        MyBase.OnSizeChanged(e)
        'Сохранение пропорций
        If Width > D Or Height > D Then 'произошло увеличение размера
            If Width > Height Then
                Height = Width
            ElseIf Height > Width Then
                Width = Height
            End If
        Else 'произошло уменьшение размера
            If Width > Height Then
                Width = Height
            ElseIf Height > Width Then
                Height = Width
            End If
        End If
        D = Width 'сохраним новый размер
    End Sub
Добавлено через 9 минут
На 6 строке написано произошло увеличение размера, а мы в 8 строке меньшей высоте присваиваем больший размер ширины.То есть делаем по максимуму размер. А надо наоборот. В 12 строке написано произошло уменьшение размера, а мы в 14 строке большей ширине присваиваем меньшее значение высоты и наоборот.То есть делаем по минимуму размер.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.03.2021, 15:21

Адаптация формы под разрешение экрана
У меня монитор (16:9 - 1920/1080). Делал под своё разрешение. Я думал что Win Forms C# сами подстраивают разрешеник, как оказалось - нет....

Размер формы приложения и разрешение экрана
Всем привет! Стоит такая задача: Надо сделать так, чтобы при запуске приложения его форма и все его элементы подстраивались под...

Как адаптировать XAML под разное разрешение экрана
Всем привет пишу WPF MVVM приложение. Попытался запустить его ноутбуке - и столкнулся со следующей проблемой. Другое разрешение. ...

Масштабирование компонентов javafx под разрешение экрана
Пишу на javafx . Столкнулся с такой проблемой : если запускать приложение на разных разрешениях экрана , размер компонентов не изменяется....

Масштабирование формы и контролов под нужное разрешение
Не могу понять сделал форму, а именно сделал картинки нужных размеров, расположил овалы там где надо. И у меня на буке все ОК. Пришел на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru