Використання геометричних об’єктів Windows Runtime

У WinRT існує ціла група геометричних обєктів Вони описують всілякі геометричні фігури, але, на відміну від розглянутих примітивів, можуть бути використані тільки для створення обєкта Path або для установки властивості Clip всіх обєктах UIElement

Розглядаючи геометричні обєкти, можна виділити групу простих обєктів, а також групу сегментів, які є частиною складеного контуру Розглянемо групу простих обєктів

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp LineGeometry – Задає лінію Тут можна вказати початкову та кінцеву точку

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp EllipseGeometry – Задає еліпс Може приймати радіус по кожній з осей, а також центр еліпса

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp RectangleGeometry – Задає прямокутник

Ось невеликий приклад використання простої геометричної фігури

&ltPath Stroke=&quotBlack&quot StrokeThickness=&quot2&quot &gt

&ltPathData&gt

&ltEllipseGeometry RadiusX=&quot100&quot RadiusY=&quot100&quot Center=&quot100,100&quot/&gt

&lt/PathData&gt

&lt/Path&gt

В результаті на екрані буде відображена звичайна коло

Для створення складних кривих можна використовувати більш складний обєкт – PathGeometry Він містить спеціальний набір більш дрібних обєктів – сегментів У свою чергу сегменти можуть бути розбиті на групи за допомогою обєкта типу PathFigure

Такий підхід значно перевершує мову елементаPath, Який ми розглядали вище Адже тепер можна працювати із сегментами як з окремими обєктами і звертатися до них по імені з коду

Розглянемо, які сегменти доступні для PathGeometry

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp ArcSegment – Визначає еліптичну дугу між двома точками

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp LineSegment – Описує пряму лінію між двома точками

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp BezierSegment – Описує криву Безьє

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp PolyLineSegment – Дозволяє намалювати ряд прямих ліній по масиву точок

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp PolyBezierSegment   – Дозволяє задати масив точок, які використовуються для побудови набору кривих Безьє

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp QuadraticBezierSegment – Квадратична крива Безьє

·&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp PolyQuadraticBezierSegment – Дозволяє побудувати набір квадратичних кривих Безьє

Ось невеликий приклад, що демонструє використання PathGeometry

&ltPath Stroke=&quotBlack&quot StrokeThickness=&quot1&quot &gt

&ltPathData&gt

&ltPathGeometry&gt

&ltPathGeometryFigures&gt

&ltPathFigure StartPoint=&quot10,50&quot&gt

&ltPathFigureSegments&gt

&ltBezierSegment Point1=&quot100,0&quot Point2=&quot200,200&quot Point3=&quot300,100&quot/&gt

&ltLineSegment Point=&quot400,100&quot /&gt

&ltArcSegment Size=&quot50,50&quot RotationAngle=&quot45&quot IsLargeArc=&quotTrue&quot SweepDirection=&quotClockwise&quot Point=&quot200,100&quot/&gt

&lt/PathFigureSegments&gt

&lt/PathFigure&gt

&lt/PathGeometryFigures&gt

&lt/PathGeometry&gt

&lt/PathData&gt

&lt/Path&gt

Нижче показаний результат роботи цього прикладу

Рис 46

На завершення відзначимо, що якщо ви хочете обєднувати кілька геометричних обєктів, то можете скористатися елементом GeometryGroup

Сергій Лутай, Сергій Байдачний, Windows 8 для C # розробників

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*