Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Windows presentation foundation with - MacDonald M.

MacDonald M. Windows presentation foundation with — Вильямс , 2008. — 928 c.
ISBN 978-5-8459-1429-3
Скачать (прямая ссылка): wpfwindowspresente2008.pdf
Предыдущая << 1 .. 180 181 182 183 184 185 < 186 > 187 188 189 190 191 192 .. 473 >> Следующая

При рисовании фигур эти соображения не всегда применимы. Часто требуется более тонкий контроль над расположением фигур. Однако есть много случаев, когда можно обеспечить более высокую гибкость вашего дизайна. Как Ellipse, так и Rectangle умеют изменять свой размер так, чтобы заполнять доступное пространство.
Если вы не применяете свойств Height и Width, то размер фигуры устанавливается на основе ее контейнера. В предыдущем примере удаление значений Height и Width (и пропуск значений MinHeight и MinWidth) приведут к тому, что фигуры уменьшатся до минимальных размеров, поскольку размер StackPanel установлен так, чтобы он заполнял все свое содержимое. Однако если вы заставите StackPanel принять полную ширину окна (установив свойство HorizontalAlignment в Stretch), затем также установить свойство HorizontalAlignment эллипса в Stretch и удалить свойство Width эллипса, то эллипс заполнит всю ширину окна.
Shapes ? I a —^-1
О I
Рис. 13.2. Две простые фигуры Рис. 13.3. Закругленные углы
Hj] Rounded Rectangles I g I В I^J
Corner radius of 5.
Corner radius of 10.
4______________J
Corner radius of 10 {X] and 25 (Y).
Book_Pro_WPF-2.mdb 363 19.05.2008 18:10:24
364 Глава 13
Более наглядный пример можно привести с контейнером Grid. Если вы используете пропорциональные размеры строк (по умолчанию так оно и есть), то можете создать эллипс, заполняющий окно, применив следующий упрощенный код разметки:
<Grid>
<Ellipse Fill="Yellow" Stroke="Blue"></Ellipse>
</Grid>
Здесь Grid заполняет все окно. Grid содержит в себе единственную строку с пропорциональным размером, которая заполняет его целиком. И, наконец, эллипс заполняет всю строку.
Поведение, касающееся выбора размера, зависит от значения свойства Stretch (которое определено в классе Shape). По умолчанию оно установлено в Fill, что растягивает фигуру так, чтобы она заполнила весь контейнер, если ее размер не указан явно. Все возможные значения перечисления Stretch перечислены в табл. 13.2.
Таблица 13.2. Значения перечисления Stretch
Имя
Описание
Fill
None
Uniform
UniformToFill
Ваша фигура растягивается по ширине и высоте для полного заполнения контейнера. (Если вы устанавливаете явно высоту и ширину, эта настройка не имеет эффекта.)
Фигура не растягивается. Если вы не устанавливаете ненулевую ширину и высоту (используя свойства Height и Width или MinHeight и MinWidth), фигура вообще не появляется.
Ширина и высота увеличиваются пропорционально, пока фигура не достигнет границ контейнера. Если вы используете это с эллипсом, то получите самую большую окружность, которая умещается в окно. Если же применять это с прямоугольником, получится максимально возможный квадрат. (Если вы установите высоту и ширину явно, фигура будет иметь указанные границы. Например, если вы установите Width в 10 и Height в 100 для прямоугольника, то получите только квадрат размером 10x10.)
Ширина и высота устанавливаются пропорционально, пока фигура не заполнит всю доступную высоту и ширину. Например, если вы поместите прямоугольник с такой установкой размера в окно размером 100x200 единиц, то получите прямоугольник размером 200x200, и часть его будет усечена. (Если вы явно установите высоту и ширину, фигура будет вписана в указанные размеры. Например, если вы установите Width в 10 и Height в 100 для прямоугольника, то получите прямоугольник 100x100, усеченный так, чтобы уместиться в поле 10x100.)
На рис. 13.4 демонстрируется разница между Fill, Uniform и UniformToFill.
Обычно значение Stretch, равное Fill — это то же самое, что установка HorizontalAlignment и VerticalAlignment в Stretch. Разница проявляется, когда вы устанавливаете фиксированные Width и Height вашей фигуры. В этом случае значения HorizontalAlignment и VerticalAlignment просто игнорируются. Однако установка Stretch все же дает эффект — она определяет то, как содержимое вашей фигуры размещается в пределах установленных границ.
Совет. В большинстве случаев вы устанавливаете размер фигуры явно или позволяете ей растягиваться, чтобы заполнить отведенное пространство. Оба подхода вместе комбинировать нельзя.
Book Pro WPF-2.indb 364
1:10:24
Фигуры, трансформации и кисти 365
» 1 Fill Mod es
Рис. 13.4. Заполнение трех ячеек Grid
До сих пор вы видели, как устанавливаются размеры Rectangle и Ellipse, но как насчет размещения их точно там, где вам нужно? Фигуры WPF используют ту же систему компоновки, что и любой другой элемент. Однако некоторые контейнеры компоновки для этого не подходят. Например, StackPanel, DockPanel и WrapPanel часто оказываются вовсе не тем, что нужно, поскольку они предназначены для разделения элементов. Grid несколько более гибкий, потому что позволяет разместить столько элементов, сколько вы хотите, в одной и той же ячейке (хотя и не позволит разместить квадраты и эллипсы в разных частях ячейки). Идеальный контейнер — Canvas, который требует явного указания координат каждой фигуры через присоединенные свойства Left, Top, Right и Bottom. Он дает вам полный контроль над перекрытием фигур.
Предыдущая << 1 .. 180 181 182 183 184 185 < 186 > 187 188 189 190 191 192 .. 473 >> Следующая