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

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

<Polygon Stroke="Blue" StrokeThickness="1" Fill="Yellow"
Canvas.Left="10" Canvas.Top="175" FillRule="Nonzero"
Points="15,200 68,70 110,200 0,125 135,125">
</Polygon>
Концы линий и стыки линий
Рисуя фигуры Line и Polyline, вы можете указать форму начальной и конечно точки линии, используя свойства StartLineCap и EndLineCap. (Эти свойства не имеют эффекта в других фигурах, поскольку те замкнуты.)
Изначально и StartLineCap, и EndLineCap установлены в Flat, что означает немедленное завершение линии в ее конечных координатах. К другим возможным вариантам относятся Round (линия мягко закругляется), Triangle (сводит обе стороны линии в точку) и Square (завершает линию четкой гранью). Все эти значения добавляют линии длину — другими словами, они выводят ее за ту позицию, в которой она закончилась бы в противном случае. Дополнительное расстояние составляет половину толщины линии.
Пересекаются две линии (четное число). Область не заполняется.
Пересекается одна линия (нечетное число). Область заполняется.
Пересекаются две линии слева направо. Разница счетчиков не равна нулю. Область заполняется.
Рис. 13.9. Определение областей заполне- Рис. 13.10. Определение областей заполнения при Е111Р.и1е, равном EvenOdd ния при Е111Яи1е, равном Ео^его
Book_Pro_WPF-2.indb 371
:10:25
372 Глава 13
На заметку! Единственное отличие между Flat и Square состоит в том, что линии, завершающиеся как Square, просто на половину толщины длиннее с каждой стороны. Во всех остальных отношениях они выглядят одинаково.
На рис. 13.11 показаны различные варианты концов линий.
Все фигуры, кроме Line, позволяют изменять вид и форму их углов через свойство StrokeLineJoin. Здесь у вас есть три выбора. Значение по умолчанию, Miter, использует четкие грани, в то время как Bevel обрезает угол в точке сопряжения, а Round — плавно закругляет его. На рис. 13.12 можно видеть разницу между ними.
При использовании граней Miter при толстых линиях и очень малых углах может получиться, что угол превышает половину толщины линии. Если вы установите толщину 3, то выступающий угол может в полтора раза превышать толщину линии. Последняя линия на рис. 13.12 использует большое значение заострения с узким углом.
Пунктиры
Вместо рисования скучных сплошных линий на границах вашей фигуры можно использовать пунктирные (dashed) линии — т.е. линии, прерываемые пробелами в соответствии с указанным шаблоном.
При создании пунктирной линии в WPF вы не ограничены определенным набором жестко заданных вариантов. Вместо этого вы можете выбирать длину сплошного сегмента и длину прерванного сегмента (пробела), устанавливая свойство StrokeDashArray. Например, рассмотрим следующую линию:
<Polyline Stroke="Blue" StrokeThickness="14" StrokeDashArray="1 2”
Points="10,30 60,0 90,40 120,10 350,10">
</Polyline>
Здесь задана длина сплошного сегмента в 1 и ширина пробела — 2. Эти значения интерпретируются относительно толщины линии. Поэтому если линия имеет толщину 14 единиц (как в данном примере), то сплошная часть будет иметь длину 14 единиц, а ширина пропуска — 28. Линия повторяет этот шаблон на протяжении всей своей длины.
LineCaps
I о I в
Flat Line Cap
Square Line Cap
Round Line Cap
Triangle Line Cap
Рис. 13.11. Концы линий
[il LineJoins
I a I a \щ&т\
Bevel Line Join
V Round Line Join
V Miter Line Join
Miter Line Join With Limit of 3
Рис. 13.12. Стыки линий
Book_Pro_WPF-2.mdb 372
:10:25
Фигуры, трансформации и кисти 373
С другой стороны, если вы поменяете местами эти значения, и зададите их следующим образом:
StrokeDashArray="2 1”
то получите линию с длиной сплошного участка в 28 единиц и шириной пропуска в 13 единиц. На рис. 13.13 показаны обе линии. Как несложно заметить, когда сегмент очень толстой линии приходится на угол, он может быть обрезан неровно.
Ничто не ограничивает вас целочисленными значениями. Например, следующее значение StrokeDashArray совершенно законно:
StrokeDashArray="5 0.2 3 0.2"
* 1 DashedLines [. = 1 a I- i
? ? 1 ? ? ? ? ? ?? Dash Pattern "12"
1 1 1 1 \ \ Dash Pattern "2 1"
/у — Dash Pattern "5 0.2 3 0.2"
1 1 4 -4 \ Uneven Dash Pattern "2 0.5 2"
» m m m m Dash Pattern with Rounded Caps
Рис. 13.13. Пунктирные линии
Оно применяет более сложную последовательность — штрих длиной 5х 14, затем пробел шириной 0,2x15, за которым идет штрих длиной 3x14 и еще один — длиной 0,2x14. В конце этой последовательности линий повторяет тот же шаблон сначала.
Интересная вещь происходит, если вы передаете StrokeDashArray нечетное количество значений. Рассмотрим пример:
StrokeDashArray="3 0.5 2"
При рисовании этой линии WPF начинает с линии длиной в 3 толщины, за которой следует пробел в половину толщины линии, за которым идет штрих длиной в 2 толщины. Но когда шаблон повторяется, он начинается с пробела шириной в 3 толщины, за ним идет линия длиной в половину толщины и опять пробел. По сути, пунктирная линия чередует шаблоны между сегментами линии и пробелами.
Если вы хотите, чтобы ваш шаблон пунктирной линии начинался с его середины, можно применить свойство StrokeDashOffset, которое представляет собой начинающийся с 0 индекс, указывающий на одно из значений из StrokeDashArray. Например, если вы установите StrokeDashOffset равным 1 в предыдущем примере, то линия начнется с пробела в половину толщины. Установите 2 — и линия начнется с сегмента в 2 толщины.
Предыдущая << 1 .. 184 185 186 187 188 189 < 190 > 191 192 193 194 195 196 .. 473 >> Следующая