Тип Polyline
х, у) (через свойство Points) для рисования последовательности линейных сегментов, не требующих замыкания. Тип Polygon похож, но запрограммирован так, что всегда замыкает контур, соединяя начальную точку с конечной, и заполняет внутреннюю область с помощью указанной кисти. Предположим, что в редакторе Kaxaml создан следующий элемент StackPanel: Points ="10,10 40,40
10,90 300,50"/>
Points ="40,10 70,80 10,50" />
На рис. 26.2 показан визуализированный вывод в Kaxaml.
Работа с элементом Path
Применяя только типы Rectangle
Ellipse, Polygon, Polyline и Line, нарисовать детализированное двумерное векторное изображение было бы исключительно трудно, т.к. упомянутые примитивы не позволяют легко фиксировать графические данные, подобные кривым, объединениям перекрывающихся данных и т.д. Последний производный от Shape класс, Path, предоставляет возможность определения сложных двумерных графических данных в виде коллекции независимых Data класса Path, где она будет использоваться для визуализации сложного двумерного изображения.Свойство Data
System.Windows.Media.Geometry, который содержит ключевые члены, кратко описанные в табл. 26.2.Классы, которые расширяют класс Geometry
Shape. Например, класс EllipseGeometry имеет члены, подобные членам класса Ellipse. Крупное отличие связано с тем, что производные от Geometry классы не знают, каким образом визуализировать себя напрямую, поскольку они не являются UIElement. Взамен классы, производные от Geometry, представляют всего лишь коллекцию данных о точках, которая указывает объекту Path, как их визуализировать.На заметку!
КлассPath не является единственным классом в инфраструктуре WPF, который способен работать с коллекцией геометрических объектов. Например, классы DoubleAnimationUsingPath, DrawingGroup, GeometryDrawing и даже UIElement могут использовать геометрические объекты для визуализации с применением свойств PathGeometry, ClipGeometry, Geometry и Clip соответственно.В показанной далее разметке для элемента Path
Geometry. Обратите внимание, что свойство Data объекта Path устанавливается в объект GeometryGroup, который содержит объекты других производных от Geometry классов, таких как EllipseGeometry, RectangleGeometry и LineGeometry. Результат представлен на рис.26.3.
Изображение на рис. 26.3 может быть визуализировано с применением показанных ранее классов Line
Ellipse и Rectangle. Однако это потребовало бы помещения различных объектов UIElement в память. Когда для моделирования точек рисуемого изображения используются геометрические объекты, а затем коллекция геометрических объектов помещается в контейнер, который способен визуализировать данные (Path в рассматриваемом случае), то тем самым сокращается расход памяти.Теперь вспомните, что класс Path
System.Windows.Shapes, а потому обладает возможностью отправлять такие же уведомления о событиях, как другие объекты UIElement. Следовательно, если определить тот же самый элемент в проекте Visual Studio, тогда выяснить, что пользователь щелкнул в любом месте линии, можно будет за счет обработки события мыши (не забывайте, что редактор Kaxaml не разрешает обрабатывать события для написанной разметки)."Мини-язык" моделирования путей
Из всех классов, перечисленных в табл. 26.3, класс PathGeometry
PathGeometry состоит из объектов, содержащих разнообразные сегменты и фигуры (скажем, ArcSegment, BezierSegment, LineSegment, PolyBezierSegment, PolyLineSegment, PolyQuadraticBezierSegment и т.д.). Вот пример объекта Path, свойство Data которого было установлено в элемент PathGeometry, состоящий из различных фигур и сегментов:
Point1="100,0"
Point2="200,200"
Point3="300,100"/>
Size="50,50" RotationAngle="45"
IsLargeArc="True" SweepDirection="Clockwise"
Point="200,100"/>
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT