СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Работа с графикой в WPF

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Работа с графикой в WPF»

Работа с графикой в WPF

Работа с графикой в WPF

Фигуры Одним из способов построения двухмерной графики в окне - это использование фигур. Фигуры фактически являются обычными элементами как например кнопка или текстовое поле. К фигурам относят такие элементы как  Polygon  (Многоугольник),  Ellipse  (овал),   Rectangle  (прямоугольник),  Line  (обычная линия),  Polyline  (несколько связанных линий). Фигуры наследуются от абстрактного базового класса  System.Windows.Shapes.Shape

Фигуры

  • Одним из способов построения двухмерной графики в окне - это использование фигур. Фигуры фактически являются обычными элементами как например кнопка или текстовое поле. К фигурам относят такие элементы как  Polygon  (Многоугольник),  Ellipse  (овал),  Rectangle  (прямоугольник),  Line  (обычная линия),  Polyline  (несколько связанных линий). Фигуры наследуются от абстрактного базового класса  System.Windows.Shapes.Shape
Свойства  От базового класса они наследуют ряд общих свойств: Fill  заполняет фон фигуры с помощью кисти - аналогичен свойству  Background  у прочих элементов Stroke  задает кисть, которая отрисовывает границу фигуры - аналогичен свойству  BorderBrush  у прочих элементов StrokeThikness  задает толщину границы фигуры - аналогичен свойству  BorderThikness  у прочих элементов

Свойства

От базового класса они наследуют ряд общих свойств:

  • Fill  заполняет фон фигуры с помощью кисти - аналогичен свойству  Background  у прочих элементов
  • Stroke  задает кисть, которая отрисовывает границу фигуры - аналогичен свойству  BorderBrush  у прочих элементов
  • StrokeThikness  задает толщину границы фигуры - аналогичен свойству  BorderThikness  у прочих элементов
Свойства (продолжение) StrokeStartLineCap  и  StrokeEndLineCap  задают для незамкнутых фигур (Line) контур в начале и в конце линии соответственно StrokeDashArray  задает границу фигуры в виде штриховки, создавая эффект пунктира StrokeDashOffset  задает расстояние до начала штриха StrokeDashCap  задает форму штрихов

Свойства (продолжение)

  • StrokeStartLineCap  и  StrokeEndLineCap  задают для незамкнутых фигур (Line) контур в начале и в конце линии соответственно
  • StrokeDashArray  задает границу фигуры в виде штриховки, создавая эффект пунктира
  • StrokeDashOffset  задает расстояние до начала штриха
  • StrokeDashCap  задает форму штрихов
Ellipse

Ellipse

Rectangle

Rectangle

Line

Line

Polygon

Polygon

Polyline

Polyline

Настройка контура

Настройка контура

Цвет самого контура определяется с помощью свойства Stroke, а его толщина - с помощью StrokeThickness. StrokeDashArray устанавливает длину штрихов вместе с отступами. Например, StrokeDashArray=
  • Цвет самого контура определяется с помощью свойства Stroke, а его толщина - с помощью StrokeThickness.
  • StrokeDashArray устанавливает длину штрихов вместе с отступами. Например, StrokeDashArray="4 2" устанавливает длину штриха в 4 единицы, а последующего отступа в 2 единицы. И эти значения будут повторяться по всему контуру. При другой установке, например, StrokeDashArray="1 2 3" уже задается два штриха. Первый штрих имеет длину в 1 единицу, а второй - в 3 единицы и между ними расстояие в 2 единицы. И так вы можем настроить количество штрихов и расстояний между ними.
StrokeDashCap StrokeDashCap задает форму на концах штрихов и может принимать следующие значения: Flat: стандартные штрихи с плоскими окончаниями Square: штрихи с прямоугольными окончаниями Round: штрихи с округлыми окончаниями Triangle: штрихи с окончаниями в виде треугольников

StrokeDashCap

  • StrokeDashCap задает форму на концах штрихов и может принимать следующие значения:
  • Flat: стандартные штрихи с плоскими окончаниями
  • Square: штрихи с прямоугольными окончаниями
  • Round: штрихи с округлыми окончаниями
  • Triangle: штрихи с окончаниями в виде треугольников
Пути и геометрии Фигуры удобны для создания самых простейших рисунков, дизайна, однако что-то более сложное и комплексное с их помощью сделать труднее. Поэтому для этих целей применяется класс  Path , который представляет геометрический путь . Он также, как и фигуры, наследуется от класса Shape , но может заключать в себе совокупность объединенных фигур . Класс Path имеет свойство  Data , которое определяет объект Geometry - геометрический объект для отрисовки. Этот объект задает фигуру или совукупность фигур для отрисовки.

Пути и геометрии

  • Фигуры удобны для создания самых простейших рисунков, дизайна, однако что-то более сложное и комплексное с их помощью сделать труднее. Поэтому для этих целей применяется класс  Path , который представляет геометрический путь . Он также, как и фигуры, наследуется от класса Shape , но может заключать в себе совокупность объединенных фигур . Класс Path имеет свойство  Data , которое определяет объект Geometry - геометрический объект для отрисовки. Этот объект задает фигуру или совукупность фигур для отрисовки.
Класс Geometry Класс Geometry - абстрактный, поэтому в качестве объекта используется один из производных классов: LineGeometry  представляет линию, эквивалент фигуры Line RectangleGeometry  представляет прямоугольник, эквивалент фигуры Rectangle EllipseGeometry  представляет эллипс, эквивалент фигуры Ellipse

Класс Geometry

  • Класс Geometry - абстрактный, поэтому в качестве объекта используется один из производных классов:
  • LineGeometry  представляет линию, эквивалент фигуры Line
  • RectangleGeometry  представляет прямоугольник, эквивалент фигуры Rectangle
  • EllipseGeometry  представляет эллипс, эквивалент фигуры Ellipse
Класс Geometry (продолжение) PathGeometry  представляет путь, образующий сложную геометрическую фигуру из простейших фигур GeometryGroup  создает фигуру, состоящую из нескольких объектов Geometry CombinedGeometry  создает фигуру, состоящую из двух объектов Geometry StreamGeometry  - специальный объект Geometry, предназначенный для сохранения всего геометрического пути в памяти

Класс Geometry (продолжение)

  • PathGeometry  представляет путь, образующий сложную геометрическую фигуру из простейших фигур
  • GeometryGroup  создает фигуру, состоящую из нескольких объектов Geometry
  • CombinedGeometry  создает фигуру, состоящую из двух объектов Geometry
  • StreamGeometry  - специальный объект Geometry, предназначенный для сохранения всего геометрического пути в памяти
Свойства StartPoint и EndPoint Свойства StartPoint и EndPoint задают начальную и конечную точки линии.

Свойства StartPoint и EndPoint

  • Свойства StartPoint и EndPoint задают начальную и конечную точки линии.
Rect

Rect

Свойство Center Свойство Center устанавливает цетр овала, а свойста RadiusX и RadiusY - радиусы.

Свойство Center

  • Свойство Center устанавливает цетр овала, а свойста RadiusX и RadiusY - радиусы.
Объект GeometryGroup устанавливает свойство  FillRule . Если оно равно  EvenOdd  (значение по умолчанию), то перекрывающиеся поверхности двух геометрий являются прозрачными. А при значении  FillRule=
  • Объект GeometryGroup устанавливает свойство  FillRule . Если оно равно  EvenOdd  (значение по умолчанию), то перекрывающиеся поверхности двух геометрий являются прозрачными. А при значении  FillRule="Nonzero"  ,перекрывающиеся поверхности геометрий будут окрашены также, как и остальные части пути.
CombinedGeometry CombinedGeometry состоит из двух геометрий. В этом он похож на GeometryGroup, который также может объединять две геометрии. Однако между ними есть различия.

CombinedGeometry

  • CombinedGeometry состоит из двух геометрий. В этом он похож на GeometryGroup, который также может объединять две геометрии. Однако между ними есть различия.
GeometryCombinedMode  Отличие состоит в том, что объект CombinedGeometry имеет свойство  GeometryCombinedMode , которое указывает модель перекрытия двух геометрий: Union : фигура включает обе геометрии Intersect : фигура включает область, которая одновременно принадлежит обеим геометриям Xor : фигура включает только непересекающие области геометрий Exclude : фигура включает первую геометрию с исключением тех областей, которые принадлежат также и второй геометрии

GeometryCombinedMode

Отличие состоит в том, что объект CombinedGeometry имеет свойство  GeometryCombinedMode , которое указывает модель перекрытия двух геометрий:

  • Union : фигура включает обе геометрии
  • Intersect : фигура включает область, которая одновременно принадлежит обеим геометриям
  • Xor : фигура включает только непересекающие области геометрий
  • Exclude : фигура включает первую геометрию с исключением тех областей, которые принадлежат также и второй геометрии
PathGeometry PathGeometry  позволяет создавать более сложные по характеру геометрии. PathGeometry содержит один или несколько компонентов  PathFigure .

PathGeometry

  • PathGeometry  позволяет создавать более сложные по характеру геометрии. PathGeometry содержит один или несколько компонентов  PathFigure .
 Объект  PathFigure  в свою очередь формируется из сегментов. Все сегменты наследуются от класса  PathSegment  и бывают нескольких видов: LineSegment  задает отрезок прямой линии между двумя точками ArcSegment  задает дугу BezierSegment  задает кривую Безье QuadraticBezierSegment  задает квадратичную кривую Безье

Объект  PathFigure  в свою очередь формируется из сегментов. Все сегменты наследуются от класса  PathSegment  и бывают нескольких видов:

  • LineSegment  задает отрезок прямой линии между двумя точками
  • ArcSegment  задает дугу
  • BezierSegment  задает кривую Безье
  • QuadraticBezierSegment  задает квадратичную кривую Безье
PolyLineSegment  задает сегмент из нескольких линий PolyBezierSegment  задает сегмент из нескольких кривых Безье PolyQuadraticBezierSegment  задает сегмент из нескольких квадратичных кривых Безье
  • PolyLineSegment  задает сегмент из нескольких линий
  • PolyBezierSegment  задает сегмент из нескольких кривых Безье
  • PolyQuadraticBezierSegment  задает сегмент из нескольких квадратичных кривых Безье
 Эти сегменты составляют свойство  Segment  объекта PathFigure. Кроме того, PathFigure имеет еще несколько важных свойств: StartPoint  - точка начала первой фигуры IsClosed  - если значение равно true, то первая и последняя точки (если они не совпадают) соединяются IsFilled  - если значение равно true, то площадь внутри пути окрашивается кистью, заданной свойством Fill у объекта Path

Эти сегменты составляют свойство  Segment  объекта PathFigure. Кроме того, PathFigure имеет еще несколько важных свойств:

  • StartPoint  - точка начала первой фигуры
  • IsClosed  - если значение равно true, то первая и последняя точки (если они не совпадают) соединяются
  • IsFilled  - если значение равно true, то площадь внутри пути окрашивается кистью, заданной свойством Fill у объекта Path
Линии

Линии

Дуга

Дуга

Кривые Безье Кривые Безье представляют линии, для построения которых применяются сложные математические преобразования. В WPF кривые Безье представлены различными типами: простые и квадратичные кривые. Для построения кривых Безье используются начальная и конечная точки, а также ряд промежуточных точек.

Кривые Безье

  • Кривые Безье представляют линии, для построения которых применяются сложные математические преобразования. В WPF кривые Безье представлены различными типами: простые и квадратичные кривые. Для построения кривых Безье используются начальная и конечная точки, а также ряд промежуточных точек.
Трансформации Трансформации представляют инструмент изменения положения или размера элементов WPF. Трансформации могут быть полезны в тех ситуациях, когда надо изменить положение элемента, либо анимировать. Все трансформации наследуются от абстрактного базового класса  System.Windows.Media.Transform

Трансформации

  • Трансформации представляют инструмент изменения положения или размера элементов WPF. Трансформации могут быть полезны в тех ситуациях, когда надо изменить положение элемента, либо анимировать. Все трансформации наследуются от абстрактного базового класса  System.Windows.Media.Transform
 Трансформации представляют следующие классы: TranslateTransform : сдвигает элементы по горизонтали и вертикали RotateTransform : вращает элемент ScaleTransform : выполняет операции масштабирования SkewTransform : изменяет позицию элемента путем наклона на определенное количество градусов MatrixTransform : изменяет координатную систему в соответствии с определенной матрицей TransformGroup : представляет группу трансформаций

Трансформации представляют следующие классы:

  • TranslateTransform : сдвигает элементы по горизонтали и вертикали
  • RotateTransform : вращает элемент
  • ScaleTransform : выполняет операции масштабирования
  • SkewTransform : изменяет позицию элемента путем наклона на определенное количество градусов
  • MatrixTransform : изменяет координатную систему в соответствии с определенной матрицей
  • TransformGroup : представляет группу трансформаций
RotateTransform  RotateTransform поворачивает элемент вокруг оси на определенное количество градусов. Данный объект принимает три основых параметра: Angle : угол поворота CenterX : устанавливает центр вращения по оси X CenterY : устанавливает центр вращения по оси Y

RotateTransform

RotateTransform поворачивает элемент вокруг оси на определенное количество градусов. Данный объект принимает три основых параметра:

  • Angle : угол поворота
  • CenterX : устанавливает центр вращения по оси X
  • CenterY : устанавливает центр вращения по оси Y
TranslateTransform

TranslateTransform

ScaleTransform Обеспечивает масштабирование элемента на определенную величину. Для изменения ширины надо задать свойство  ScaleX , а для изменения длины - свойство  ScaleY . Кроме того, также имеются свойства  CenterX  и  CenterY , позволяющие позиционировать элемент.

ScaleTransform

  • Обеспечивает масштабирование элемента на определенную величину. Для изменения ширины надо задать свойство  ScaleX , а для изменения длины - свойство  ScaleY . Кроме того, также имеются свойства  CenterX  и  CenterY , позволяющие позиционировать элемент.
SkewTransform SkewTransform позволяет задать наклон элемента вдоль оси X с помощью свойства  AngleX , и по оси Y - с помощью свойства  AngleY . А с помощью свойств  CenterX  и  CenterY  можно изменить положение элемента относительно осй X и Y.

SkewTransform

  • SkewTransform позволяет задать наклон элемента вдоль оси X с помощью свойства  AngleX , и по оси Y - с помощью свойства  AngleY . А с помощью свойств  CenterX  и  CenterY  можно изменить положение элемента относительно осй X и Y.
MatrixTransform Осуществляет матричное преобразование элемента. В свойстве  Matrix  мы задаем первые два столбца, которые применяются при преобразовании. 

MatrixTransform

  • Осуществляет матричное преобразование элемента. В свойстве  Matrix  мы задаем первые два столбца, которые применяются при преобразовании. 
TransformGroup TransformGroup позволяет комбинировать различные трансформации вместе.

TransformGroup

  • TransformGroup позволяет комбинировать различные трансформации вместе.
RenderTransform и LayoutTransform Для применения трансформаций у фигур и стандартных элементов управления WPF используются свойства  RenderTransform  и  LayoutTransform . Несмотря на то, что для обоих свойств трансформации задаются одинаково, их действие различается. Так, свойство LayoutTransform применяется до компоновки элемента, а RenderTransform - после, поэтому одинаковые трансформации для этих свойств могут давать немного разные результаты.

RenderTransform и LayoutTransform

  • Для применения трансформаций у фигур и стандартных элементов управления WPF используются свойства  RenderTransform  и  LayoutTransform . Несмотря на то, что для обоих свойств трансформации задаются одинаково, их действие различается. Так, свойство LayoutTransform применяется до компоновки элемента, а RenderTransform - после, поэтому одинаковые трансформации для этих свойств могут давать немного разные результаты.