c масштабирование элементов на форме

Практическое руководство. Изменение размера формы в Windows Forms

Размер формы Windows Forms можно указать несколькими способами. Вы можете изменить высоту и ширину формы программными средствами, задав новое значение для свойства Size или изменив свойства Height или Width по отдельности. если вы используете Visual Studio, можно изменить размер с помощью конструктор Windows Forms. см. также руководство. изменение размера Windows Forms с помощью конструктора.

Программное изменение размера формы

Чтобы определить размер формы во время выполнения, задайте свойство Size формы.

В примере кода ниже размер формы устанавливается равным 100 × 100 пикселей.

Программное изменение ширины и высоты формы

Определив свойство Size, измените высоту или ширину формы с помощью свойств Width или Height.

В примере кода ниже для ширины формы устанавливается значение 300 пикселей, отсчитываемое от левого края формы. Высота остается неизменной.

Измените Width или Height, задав свойство Size.

Однако в примере ниже показано, что этот подход является более громоздким, чем просто задание свойств Width или Height.

Изменение размера формы с помощью приращений программными средствами

Для увеличения размера формы задайте свойства Width или Height.

В примере ниже ширина формы увеличивается на 200 пикселей по сравнению с первоначальным значением.

Всегда используйте свойство Height или Width для изменения размеров формы, если вы не устанавливаете значения высоты и ширины одновременно, присваивая свойству Size новую структуру Size. Свойство Size возвращает структуру Size, которая является типом значения. Присвоить новое значение свойству типа значения нельзя. Поэтому приведенный ниже пример кода компилироваться не будет.

Источник

Изменение размера элементов формы при ее ресайзе

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Изменение размеров компонентов при ресайзе формы
Добрый день. Использую WinForms в приложении. Возникла проблема: при разворачивании формы.

Масштабирование элементов формы при ее ресайзе
Проблема в следующем: необходимо настроить изменение размеров элементов согласно размеров окна и.

Изменение размеров компонентов при ресайзе формы («резиновый» интерфейс)
Здравствуйте программисты, суть вопроса така: На форме есть разные компоненты speed button, label и.

Пропорциональное изменение размера tabControl1 при изменении размера формы
Всем hello. Посоветуйте, что сделать. На форме есть компоненты, делаю, чтобы при изменении.

Anchor, Dock, или к событию Resize() привязывайте.

есть еще FlowLayoutPanel

Anchor, Dock, или к событию Resize() привязывайте.

есть еще FlowLayoutPanel

Вложения

zip sourceCode.zip (13.3 Кб, 213 просмотров)

Изменение размера Формы при FormBorderStyle = None
Доброго времени суток. Побаловавшись со свойством FormBorderStyle = None и найдя код, при котором.

tickИзменение размера Формы при FormBorderStyle = None
Приветствую. Есть форма с FormBorderStyle = None, теперь появилась задача как изменять размер.

tickЗапрет изменения размера формы и элементов при изменении шрифта и его размера
Здравствуйте. К слову вопрос название темы. А именно как запретить изменять размер формы и.

Автоматическое изменение размера формы с сохранением пропорций элементов
Здравствуйте! Нужна помощь, есть программа с большим количеством форм. Все формы в ней FixedSingle.

Источник

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode

Растянуть элементы на форме Windows Forms

В статье рассмотрим способ создания “резинового” интерфейса в формах Windows Forms и разберёмся, как растянуть элементы на форме при изменении размера окна программы.

Создадим в Visual Studio проект Windows Forms и разместим на форме следующие элементы управления:

Sozdannyiy interfeys

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

Rastyagivanie interfeysa

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

Теперь покажем, как создать адаптивный к изменениям размера окна интерфейс на форме Windows Forms.

Как растянуть элементы на форме Windows Forms

Для создания “резинового” интерфейса нужно воспользоваться свойствами элементов управления из категории Макет (Layout). А конкретно свойством Anchor.

В Windows Forms свойство Anchor определяет стороны контейнера (Top, Bottom, Left, Right) к которым привязывается элемент управления. При изменении размера контейнера расстояние между указанной стороной контейнера и ближайшей к ней стороне элемента управления остаётся неизменным.

Таким образом можно добиться растягивания и перемещения элементов в форме при изменении её размера.

В нашем случае контейнером для элементов управления является всё окно.

Зададим для TextBox значение атрибута Anchor = Top, Left, Right. Теперь расстояние между соответствующими сторонами ТекстБокса и окна будет неизменным. Так мы добьёмся изменения ширины контрола при изменении ширины окна.

Anchor dlya TextBox

Для RichTextBox значение свойства Anchor сделаем равным Top, Bottom, Left, Right.

Anchor dlya RichTextBox

У кнопки Button установим Anchor, как Top, Right.

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

Rastyagivanie e%60lementov

Есть ещё один момент. Когда мы будем уменьшать мышью размер формы – контролы будут скрываться из поля зрения.

E%60lementyi ne vidnyi

Чтобы решить данную проблему, необходимо указать минимальный размер формы Windows Form в пикселях. Тем самым форму будет невозможно сделать меньше установленного размера.

Щёлкнем по форме и в окне свойств изменим параметр MinimunSize. Установим его равным текущему размеру формы в визуальном редакторе (Size).

Minimalnyiy razmer formyi

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

Источник

При создании формы размер и расположение изначально задаются как значения по умолчанию. Размер формы по умолчанию обычно имеет ширину и высоту 800 x 500 пикселей. Начальное расположение, отображаемое при отображении формы, зависит от нескольких различных параметров.

Изменить размер формы можно во время разработки с помощью Visual Studio, а также во время выполнения с помощью кода.

Изменение размера с помощью конструктора

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

designer grips

Второй способ изменения размера формы — в конструкторе на панели «Свойства». Выберите форму, а затем найдите панель Свойства в Visual Studio. Прокрутите вниз до раздела Размер и разверните его. Можно вручную задать параметры Ширина и Высота.

designer properties size

Изменение размера в коде

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

Чтобы изменить размер формы, измените свойство Size, которое представляет ширину и высоту формы.

Изменение размера текущей формы

Размер текущей формы можно изменить, пока код выполняется в контексте формы. Например, если имеется Form1 с кнопкой, то при нажатии на нее вызывается обработчик событий Click для изменения размера формы:

Изменение размера другой формы

Если свойство Size не задано вручную, размер формы по умолчанию — это размер, заданный во время разработки.

Расположение с помощью конструктора

При создании и отображении экземпляра формы начальное расположение формы определяется свойством StartPosition. Свойство Location содержит текущее положение в форме. Оба свойства можно задать с помощью конструктора.

startposition

Перечисление FormStartPosition Описание
CenterParent Форма располагается в центре родительской формы.
CenterScreen Форма располагается по центру текущего экрана.
Вручную Положение формы определяется свойством Расположение.
WindowsDefaultBounds Форма размещается в расположении Windows по умолчанию и ее размер подгоняется под размер по умолчанию, который определен Windows.
WindowsDefaultLocation Форма размещается в расположении Windows по умолчанию и не изменяется.

Значение CenterParent работает только с формами, которые являются либо дочерними формами многодокументного интерфейса (MDI), либо обычными формами, отображаемыми с помощью метода ShowDialog. CenterParent не влияет на обычную форму, которая отображается с помощью метода Show. Чтобы разместить форму по центру (переменная form ) другой формы (переменная parentForm ), используйте следующий код:

Расположение с помощью кода

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

Перемещение текущей формы

Расположение другой формы

Если свойство Size не задано, размер формы по умолчанию — это размер, заданный во время разработки.

Источник

C масштабирование элементов на форме

Программы из этой главы использовали свойство FontHeight формы, чтобы установить размер элементов управления с текстом. Для вычисления ширины элемента управления я брал половину высоты шрифта и считал ее примерно равной ширине символов в нижнем регистре. (Этого даже много для шрифта Courier.) Так как элементы управления наследуют шрифт от своих предков, этот способ отлично подходит для масштабирования элементов управления. Если нужно изменить шрифт формы (и элементов), это следует сделать в конструкторе формы до получения высоты шрифта.

.NET Framework предлагает иной метод масштабирования элементов управления, автоматическое масштабирование (auto-scale). Для этого служат свойства класса Form:

Свойства Form (выборочно)

Тип Свойство Доступ Описание
bool AutoScale Чтение/запись По умолчанию true
Size AutoScaleBaseSize Чтение/запись Высота и ширина шрифта формы

Единственный статический метод Form тоже связан с автоматическим масштабированием:

Статический метод Form

SizeF GetAutoScaleSize(Font font)

Свойство AutoScaleBaseSize и метод GetAutoScaleSize полезны сами по себе, даже если вы не применяете автоматическое масштабирование. В Windows Forms это единственный источник сведений о средней ширине символов конкретного шрифта. По умолчанию AutoScaleBaseSize возвращает ширину и высоту для шрифта, заданного в свойстве Font формы, a GetAutoScaleSize — ширину и высоту любого объекта Font. Возвращаемая ширина вычисляется как средняя на основе символов латинского алфавита в нижнем регистре. Высота же равна свойству Height объекта Font.

Допустим, вы установили в параметрах экрана Small Fonts. В таком случае AutoScaleBaseSize сообщает, что шрифт Windows Forms по умолчанию в 8 пт имеет ширину 5 и высоту 13 пикселов. Для Large Fonts, AutoScaleBaseSize сообщает о ширине 6 пикселов и высоте 15. Так что, если хотите точнее позиционировать элементы управления, используйте:

Только что я сказал, что AutoScaleBaseSize возвращает ширину и высоту, вычисленные на основе свойства Font формы. Это так. И если изменить свойство Font формы, AutoScaleBaseSize вернет ширину и высоту нового шрифта. Однако это справедливо лишь в том случае, если сама форма не устанавливает свойство AutoScaleBaseSize. Если же форма сама установила это свойство (я имею в виду, что вы написали код, устанавливающий это свойство), оно возвращает значение, заданное формой.

Вот в чем секрет автоматического масштабирования: если форма устанавливает свойство AutoScaleBaseSize, ширина и высота дочерних элементов управления масштабируется в зависимости от отношения высоты и ширины, определяемой свойством Font формы к высоте и ширине, определяемых свойством AutoScaleBaseSize. Если форма не устанавливает AutoScaleBaseSize, эти отношения равны 1, и масштабирования не происходит.

Вообще во время установки свойств Location и Size дочерних элементов управления форма может использовать любую систему координат и любые размеры. Затем с помощью AutoScaleBaseSize указывается система координат. Масштабирование происходит на основании текущих свойств Font и AutoScaleBaseSize после выполнения конструктора формы.

Поначалу автоматическое масштабирование выглядит сложным, так что рассмотрим несколько примеров.

Автоматическое масштабирование и Windows Forms Designer

Допустим, для дисплея установлен размер шрифта Small Fonts. Когда вы конструируете форму с помощью Windows Forms Designer, он генерирует код, содержащий размер в пикселах. Например, свойство Size элемента управления Button можно установить так:

Да, Windows Forms Designer многословен. Но суть не в этом. Обычно жесткое кодирование положения и размеров элементов управления приводит к неприятностям. Можете быть уверены, что рано или поздно кто-нибудь запустит вашу программу в режиме Large Fonts или с еще большими шрифтами и текст на кнопках будет обрезан. Но Windows Forms Designer добавляет еще одну инструкцию в конструктор:

Этот размер представляет собой ширину и высоту шрифта в режиме Small Fonts. По сути дела Windows Forms Designer вставляет в код разрешение экрана, на котором основано местоположение и размеры элементов управления.

Если эта программа запускается на компьютере, на котором задан режим Small Fonts, отношение высоты и ширины шрифта к высоте и ширине свойства AutoScaleBaseSize равно 1, а местоположение и размеры элементов управления применяются напрямую.

Если же на компьютере действует режим Large Fonts, ширина и высота шрифта равны 6 и 15 соответственно. Когда конструктор формы завершает работу, Windows Forms масштабирует горизонтальные координаты и размеры, используя множитель 6/5 (это средняя ширина, вычисленная из свойства Font формы, деленная на AutoScaleBaseSize.Width). Вертикальные координаты и размеры масштабируются с использованием множителя 15/13, что представляет собой высоту шрифта формы, деленную на AutoScaleBaseSize.Height.

Именно так Windows Forms Designer избавляет от проблем, связанных с жестким заданием размеров и координат.

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

Однако применение AutoScaleBaseSize может быть и более интересным.

Творческий подход к AutoScaleBaseSize

Обычно Windows-программисты, пишущие на С и C++, используя Win32 API или библиотеки Microsoft Foundation Class (MFC), определяют диалоговые окна в текстовом формате, называемом шаблоном диалогового окна, и применяют специальную независимую от устройства систему координат диалогового окна. Координаты х измеряются в 1/4 от средней ширины шрифта, координаты у — в 1/8 высоты шрифта. Так, если местоположение задано как (40, 32), элемент располагается на расстоянии 10 средних размеров символов по ширине от левого края диалогового окна и на расстоянии, равном высоте 4 символов от верхнего края.

В Windows Forms можно использовать ту же координатную систему. Все, что для этого нужно, — добавить в конструктор следующую инструкцию:

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

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

Внутри автоматического масштабирования

После исполнения кода конструктора формы, она сама и ее дочерние элементы управления масштабируются на основании свойств Font и AutoScaleBaseSize формы. На самом деле масштабирование выполняется защищенным методом ScaleCore класса Control, вызываемом сначала для формы, а затем для всех дочерних элементов управления.

Можно самостоятельно выполнять то, что делает автоматическое масштабирование, используя методы Scale:

Методы Control (выборочно)

void Scale(float fScale)
void Scale(float xScale, yScale)

Например, установив свойство AutoScale в false, вы можете имитировать автоматическое масштабирование, вставив такие строки в конце конструктора формы:

Это ширина и высота Font формы, деленные на высоту и ширину, указанные в свойстве AutoScaleBaseSize.

Если нужно перемасштабировать элементы управления — к примеру, потому что вы изменили свойство Font где либо еще, кроме конструктора, — не полагайтесь на то, что автоматическое масштабирование выполнит эту работу за вас. Вам придется напрямую вызвать Scale. Имейте в виду: форма и элементы управления не хранят историю предыдущих масштабирований. После того, как элементы управления были масштабированы в конструкторе, их размеры и местоположения представляют собой значения в пикселах. Нельзя просто вызвать Scale с параметрами, рассчитанными из свойств формы Font и AutoScaleBaseSize. Вам придется вычислить масштабирующий коэффициент на основе размера старого и нового шрифтов.

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

Для хранения целочисленного значения размера в пунктах, связанного с каждой кнопкой, в программе используется свойство Tag элемента управления Button. В методе ButtonOnClick свойство Tag приводится к целому числу и создается шрифт. Вот окно программы при установленном размере шрифта формы 12 пт:

f12 14

При щелчках по кнопкам размер формы изменяется согласно новому размеру шрифта.

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

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • c координаты мыши вне формы
  • c консольное приложение не закрывалось