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

Суворов С. "Танк Т-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 .. 183 184 185 186 187 188 < 189 > 190 191 192 193 194 195 .. 473 >> Следующая

Polyline может описываться всего двумя точками. Например, ниже приведен пример фигуры Polyline, дублирующей линию, которую вы видели выше, простирающуюся от (5,100) до (15,200):
<Polyline Stroke="Blue" Points="5 100 15 200"></Polyine>
Для улучшения читабельности используйте запятую между каждой парой координат X и Y:
<Polyline Stroke="Blue" Points="5,100 15,200"></Polyline>
А вот более сложный объект Polyline, начинающийся в (10,150). Точки монотонно распределяются слева направо, колеблясь между наибольшим значением (50, 160) и наименьшим (70, 130):
<Canvas>
<Polyline Stroke="Blue" StrokeThickness="5" Points="10,150 30,140 50,160 70,130
90,170 110,120 130,180 150,110 170,190 190,100 210,240" >
</Polyline>
</Canvas>
Полученная в результате линия показана на рис. 13.7.
Рис. 13.7. Линия, состоящая из нескольких сегментов
Здесь вам может показаться, что было бы проще наполнить коллекцию Points программно, используя некоторый цикл, автоматически увеличивающий значения X и Y соответственно. Это верно, если требуется создавать динамическую графику — например, график, изменяющий свою форму в зависимости от информации, извлеченной из базы данных. Но если вам просто нужно построить фиксированный фрагмент графического содержимого, вообще незачем беспокоиться об определенных координатах ваших фигур. Вместо этого вы (или дизайнер) применяете другой инструмент, такой как Expression Design, для рисования соответствующей графики с последующим экспортом ее в XAML.
Book_Pro_WPF-2.mdb 369 19.05.2008 18:10:25
370 Глава 13
Polygon
Polygon — почти то же самое, что и Polyline. Как и Polyline, класс Polygon определяет коллекцию Points, принимающую список координат. Единственное отличие в том, что Polygon добавляет финальный сегмент, соединяющий начальную и конечную точки. (Если финальная точка уже совпадает с начальной, то Polygon ничем от Polyline не отличается.) Вы можете заполнить внутреннюю часть этой фигуры, используя кисть Fill. На рис. 13.8 показан предыдущий Polyline как Polygon, заполненный желтым цветом.
Рис. 13.8. Закрашенный многоугольник
На заметку! Технически вы можете также устанавливать свойство Fill для объекта Polyline. В этой ситуации Polyline закрашивает себя так, как если бы это был Polygon. Другими словами, как если бы он имел невидимый сегмент, соединяющий конечную точку с начальной. Этот эффект находит относительно ограниченное применение.
В простой фигуре, где линии никогда не пересекаются, заполнить внутреннюю область легко. Однако иногда вы будете иметь дело с более сложным Polygon, где не совсем очевидно, какие части находятся “внутри” фигуры (и должны быть закрашены), а какие — снаружи.
Например, взглянем на рис. 13.9, на котором представлена линия, пересекающая более одной другой линии, оставляя в центре неправильную область, которую вы можете заполнить, а можете и не заполнять. Очевидно, что вы можете определить точно, что именно надо закрашивать, разбив этот рисунок на несколько меньших фигур. Но делать это вовсе не обязательно.
Каждый элемент Polygon и Polyline включает в себя свойство FillRule, которое позволяет выбирать между двумя разными подходами в заполнении областей. По умолчанию FillRule установлено в EvenOdd. Для того чтобы решить, нужно ли заполнять область, WPF подсчитывает количество линий, которые нужно пересечь, чтобы достичь внешней стороны фигуры. Если это число нечетно, область заполняется, если же четное — нет. Чтобы попасть в центральную область фигуры на рис. 13.9, вы должны пересечь две линии, поэтому область не закрашивается.
WPF также поддерживает правило заполнения Nonzero, которое немного сложнее. По сути, следуя правилу Nonzero, WPF выполняет такой же подсчет линий, как и в EventOdd, но при этом принимает во внимание направление каждой из линий. Если количество лини, направленных в одну сторону (скажем, слева направо) равно количеству линий, направленных в противоположную сторону (справа налево), область не
Book_Pro_WPF-2.mdb 370
1:10:25
Фигуры, трансформации и кисти 371
заполняется. Если разница между этими двумя количествами не равна нулю, область заполняется. В фигуре из предыдущего примера внутренняя область заполняется, если вы устанавливаете РПЩи1е в Мопгего. Посмотрев на рис. 13.10, вы поймете почему. (В данном примере точки пронумерованы в порядке их рисования, а стрелки показывают направление, в котором рисуется каждая из линий.)
На заметку! Если количество линий нечетное, то разница между счетчиками не может быть равна нулю. Поэтому правило заполнения Nonzero всегда заполняет, как минимум, столько же областей, что и правило EvenOdd, плюс, возможно, немного больше.
Особенность Nonzero состоит в том, что его настройки заполнения зависят от того, как вы рисуете фигуру, а не от того, как она выглядит. Например, вы можете нарисовать ту же фигуру таким образом, что ее центр не будет заполнен (хотя это и труднее, вы можете начать рисовать внутреннюю область, а затем нарисовать внешние лучи в обратном направлении).
Вот как выглядит код разметки, который рисует звезду, показанную на рис. 13.10:
Предыдущая << 1 .. 183 184 185 186 187 188 < 189 > 190 191 192 193 194 195 .. 473 >> Следующая