Практическое руководство. Создание составной фигуры

Обновлен: Ноябрь 2007

В данном примере демонстрируется создание составных фигур с помощью объектов класса Geometry и их отображение с помощью элемента Path. В примере объекты LineGeometry, EllipseGeometry и RectangleGeometry используются вместе с GeometryGroup для создания составной фигуры. Затем геометрические объекты рисуются с помощью элемента Path.

Пример

<!-- Displays the geometry. --> 
<Path Stroke="Black" StrokeThickness="1" Fill="#CCCCFF">
  <Path.Data>

    <!-- Creates a composite shape from three geometries. -->
    <GeometryGroup FillRule="EvenOdd">
      <LineGeometry StartPoint="10,10" EndPoint="50,30" />
      <EllipseGeometry Center="40,70" RadiusX="30" RadiusY="30" />              
      <RectangleGeometry Rect="30,55 100 30" />
    </GeometryGroup>
  </Path.Data>
</Path>
// Create a Path to be drawn to the screen.
Path myPath = new Path();
myPath.Stroke = Brushes.Black;
myPath.StrokeThickness = 1;
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
mySolidColorBrush.Color = Color.FromArgb(255, 204, 204, 255);
myPath.Fill = mySolidColorBrush;

// Create the line geometry to add to the Path
LineGeometry myLineGeometry = new LineGeometry();
myLineGeometry.StartPoint = new Point(10, 10);
myLineGeometry.EndPoint = new Point(50, 30);

// Create the ellipse geometry to add to the Path
EllipseGeometry myEllipseGeometry = new EllipseGeometry();
myEllipseGeometry.Center = new Point(40, 70);
myEllipseGeometry.RadiusX = 30;
myEllipseGeometry.RadiusY = 30;

// Create a rectangle geometry to add to the Path
RectangleGeometry myRectGeometry = new RectangleGeometry();
myRectGeometry.Rect = new Rect(30, 55, 100, 30);

// Add all the geometries to a GeometryGroup.
GeometryGroup myGeometryGroup = new GeometryGroup();
myGeometryGroup.Children.Add(myLineGeometry);
myGeometryGroup.Children.Add(myEllipseGeometry);
myGeometryGroup.Children.Add(myRectGeometry);

myPath.Data = myGeometryGroup;

// Add path shape to the UI.
StackPanel mainPanel = new StackPanel();
mainPanel.Children.Add(myPath);
this.Content = mainPanel;

На следующем рисунке показана фигура, созданная в предыдущем примере.

Составные геометрические объекты
Составная геометрическая фигура, созданная с использованием GeometryGroup

Более сложные фигуры, такие как многоугольники и фигуры с фрагментами кривых, можно создать с помощью объекта PathGeometry. Пример, показывающий, как создать фигуру с помощью PathGeometry, см. в разделе Практическое руководство. Создание фигуры с помощью PathGeometry. Хотя данный пример отображает фигуру на экране при помощи элемента Path, объекты Geometry также могут использоваться для описания содержимого GeometryDrawing или DrawingContext. Помимо этого их можно использовать для отсечения и проверки попадания курсора.

Данный пример является частью более крупного примера. Полный пример см. в разделе Примеры работы с геометрическими объектами.