Практическое занятие № 9
Пользовательские элементы в WPF-приложениях. Классы Path и Geometry.
PathGeometry позволяет создавать более сложные по характеру геометрии. PathGeometry содержит один или несколько компонентов PathFigure. Объект PathFigure в свою очередь формируется из сегментов. Все сегменты наследуются от класса PathSegment и бывают нескольких видов:
LineSegment задает отрезок прямой линии между двумя точками
ArcSegment задает дугу
BezierSegment задает кривую Безье
QuadraticBezierSegment задает квадратичную кривую Безье
PolyLineSegment задает сегмент из нескольких линий
PolyBezierSegment задает сегмент из нескольких кривых Безье
PolyQuadraticBezierSegment задает сегмент из нескольких квадратичных кривых Безье
Эти сегменты составляют свойство Segment объекта PathFigure. Кроме того, PathFigure имеет еще несколько важных свойств:
StartPoint - точка начала первой фигуры
IsClosed - если значение равно true, то первая и последняя точки (если они не совпадают) соединяются
IsFilled - если значение равно true, то площадь внутри пути окрашивается кистью, заданной свойством Fill у объекта Path
Линии
Создание линий с помощью PathGeometry:
Управляя свойством IsClosed мы можем получить как замкнутый, так и незамкнутый контур. А при применении свойства Fill в элементе Path содержимое контура заполняется цветом. Таким образом, мы можем получить не просто линию, а целостные фигуры, заполненные цветом.
Дуга
Для создания дуги у ArcSegment задается свойство Point, которое указывает на конечную точку дуги (начальная точка задается через свойство StartPoint элемента PathFigure), а свойство Size устанавливает размер окружностей, по которым строится дуга.
Кривые Безье
Кривые Безье представляют линии, для построения которых применяются сложные математические преобразования. В WPF кривые Безье представлены различными типами: простые и квадратичные кривые. Для построения кривых Безье используются начальная и конечная точки, а также ряд промежуточных точек:
Начальная точка кривых устанавливается с помощью свойства StartPoint элемента PathFigure. Для простой кривой Безье свойства Point1 и Point2 задают промежуточные точки, а Point3 является конечной точкой. Для квадратичной кривой Point2 - конечная точка, а Point1 - промежуточная.
Трансформации представляют инструмент изменения положения или размера элементов WPF. Трансформации могут быть полезны в тех ситуациях, когда надо изменить положение элемента, либо анимировать. Все трансформации наследуются от абстрактного базового класса System.Windows.Media.Transform и представляют следующие классы:
TranslateTransform: сдвигает элементы по горизонтали и вертикали
RotateTransform: вращает элемент
ScaleTransform: выполняет операции масштабирования
SkewTransform: изменяет позицию элемента путем наклона на определенное количество градусов
MatrixTransform: изменяет координатную систему в соответствии с определенной матрицей
TransformGroup: представляет группу трансформаций
RotateTransform
RotateTransform поворачивает элемент вокруг оси на определенное количество градусов. Данный объект принимает три основых параметра:
Angle: угол поворота
CenterX: устанавливает центр вращения по оси X
CenterY: устанавливает центр вращения по оси Y
TranslateTransform
TranslateTransform позволяет сместить положение элемента по оси X, с помощью свойства X, и по оси Y - с помощью свойства Y.
ScaleTransform
Обеспечивает масштабирование элемента на определенную величину. Для изменения ширины надо задать свойство ScaleX, а для изменения длины - свойство ScaleY. Кроме того, также имеются свойства CenterX и CenterY, позволяющие позиционировать элемент.
Например, увеличение прямоугольника в полтора раза:
SkewTransform
SkewTransform позволяет задать наклон элемента вдоль оси X с помощью свойства AngleX, и по оси Y - с помощью свойства AngleY. А с помощью свойств CenterX и CenterY можно изменить положение элемента относительно осй X и Y:
MatrixTransform
Осуществляет матричное преобразование элемента. В свойстве Matrix мы задаем первые два столбца, которые применяются при преобразовании. Последний столбец по умолчанию имеет значения {0 0 1}.
RenderTransform и LayoutTransform
Для применения трансформаций у фигур и стандартных элементов управления WPF используются свойства RenderTransform и LayoutTransform. Несмотря на то, что для обоих свойств трансформации задаются одинаково, их действие различается. Так, свойство LayoutTransform применяется до компоновки элемента, а RenderTransform - после, поэтому одинаковые трансформации для этих свойств могут давать немного разные результаты: