![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| vlsaf |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
Всем привет.
Имеется окно с контролами. Кнопки, текстбоксы, лаблы и т.д. Задача такая, нужно это окно и все его содержимое увеличить или уменьшить в N раз. (в полтора раза для примера). Как это делается? Говорят, что можно как-то все сожержимое окна перебрать в цикле и очень просто там все пометять? |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
А почему бы при расположении элементов на форме не воспользоваться такими свойствами как Dock и Anchor?
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| vlsaf |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
Это не то.
Можно извращаться таким образом, но есть путь покрасивше. Я видел, как работает такая штука безо всяких Dock и Anchor. Впечатлился. |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Извинясь - ступил. Они масштабирут не пропорционально, да и видимо речь идёт не об изменении размеров контейнера.
Если надо изменить размеры в N-ное количество раз то обходить в цикле надо соллекцию Controls формы и менять размеры каждого контрола. Правда в этом случае содержимое контейнеров не будет затронуто. Контейнеры надо обходить рекурсивно. Кроме того лейблы и прочие подобные элементы имеют по умолчанию Autosize = true это надо поменять. Но тут у меня есть подозрение, что речь идёт не столько о масштабировании элементов, но и их содержимого(например текста, который сам не поменяет размер шрифта при увеличении размеров лейбла или текстбокса). Там и подход другой. Я сам не пробовал, но если нужно именно это - могу подсказать направление, в котором стоит покопать. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| MasterOfCode |
|
|||
|
elwin ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 24.4.2008 Где: World.Russia.Tyum en Репутация: 4 Всего: 27 |
Логичнее было бы предположить что этот вопрос задать в разделе Разработка Windows Forms
-------------------- ![]() |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Вообще-то у контрола есть метод Scale, пропорционально меняющий размер как самого контрола, так и вложенных внего контролов. Возможно именно это имеется в виду?
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| vlsaf |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
Именно перебор в цикле коллекции.
Как это делается? Я уже понял, что мне нужно. Поменять Тор, Left, Width, Height и Font.Size для каждого контрола Уменьшить или увеличить их, так, как надо. Вроде больше ничего (на первый взгляд.) Потом видно будет, что да как. |
|||
|
||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Ну, если в текущей форме это делать и только с контролами самой формы, а не вложенными в контейнеры тогда примерно так
надо помнить о том, что если исходный размер умножается на дробное число, то в результате может получиться дробь, поэтому надо выполнить преобразование к типу Int32. Если надо это провернуть сне с самой формой, а с другим контролом, тогда вместо this указать его. А если ещё и вложенные контейнеры надо обойти, тогда потребуется рекурсивный обход. Добавлено через 19 секунд Ну, если в текущей форме это делать и только с контролами самой формы, а не вложенными в контейнеры тогда примерно так
надо помнить о том, что если исходный размер умножается на дробное число, то в результате может получиться дробь, поэтому надо выполнить преобразование к типу Int32. Если надо это провернуть сне с самой формой, а с другим контролом, тогда вместо this указать его. А если ещё и вложенные контейнеры надо обойти, тогда потребуется рекурсивный обход. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| vlsaf |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
Вот это для меня было самым важным
foreach(Control cont in this.Controls) Сенкс |
|||
|
||||
| diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Ну, если в текущей форме это делать и только с контролами самой формы, а не вложенными в контейнеры тогда примерно так
надо помнить о том, что если исходный размер умножается на дробное число, то в результате может получиться дробь, поэтому надо выполнить преобразование к типу Int32. Если надо это провернуть сне с самой формой, а с другим контролом, тогда вместо this указать его. А если ещё и вложенные контейнеры надо обойти, тогда потребуется рекурсивный обход. Добавлено через 1 минуту и 20 секунд А всё-таки к методу Scale присмотреться стОит. Добавлено через 1 минуту и 48 секунд Ну, если в текущей форме это делать и только с контролами самой формы, а не вложенными в контейнеры тогда примерно так
надо помнить о том, что если исходный размер умножается на дробное число, то в результате может получиться дробь, поэтому надо выполнить преобразование к типу Int32. Если надо это провернуть сне с самой формой, а с другим контролом, тогда вместо this указать его. А если ещё и вложенные контейнеры надо обойти, тогда потребуется рекурсивный обход. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||
|
|||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
LayoutPanel не помогает? -------------------- СУВ, Partizan. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |