Экспорт (0) Печать
Развернуть все

Geometry - класс

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

Классы, производные от данного абстрактного базового класса, определяют геометрические фигуры. Объекты Geometry могут использоваться для отсечения, проверки нажатия и отрисовки двухмерных графических данных.

Пространство имен:  System.Windows.Media
Сборка:  PresentationCore (в PresentationCore.dll)

[LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable)]
[TypeConverterAttribute(typeof(GeometryConverter))]
public abstract class Geometry : Animatable, 
	IFormattable
/** @attribute LocalizabilityAttribute(LocalizationCategory.None, Readability = Readability.Unreadable) */
/** @attribute TypeConverterAttribute(GeometryConverter) */
public abstract class Geometry extends Animatable implements IFormattable
public abstract class Geometry extends Animatable implements IFormattable
Этот класс является абстрактным; сведения о производных неабстрактных классах, используемых в языке XAML, см. в разделе Иерархия наследования.

Сравнение геометрии и фигуры

Класс System.Windows.Shapes.Shape имеет свойства Fill и Stroke, а также другие свойства отрисовки, которые отсутствуют у Geometry и производных от него классов. Класс Shape является FrameworkElement и поэтому участвует в системе макета; производные от него классы могут использоваться как содержимое любого элемента, поддерживающего дочерние UIElement.

Класс Geometry, с другой стороны, просто определяет геометрию фигуры, и сам себя отображать не может. Благодаря своей простоте он имеет широкую область применения.

Возможности замораживаемых объектов: поскольку эти объекты наследуют класс Freezable, класс Geometry обеспечивает несколько специальных функций: объекты Geometry могут быть объявлены как ресурсы, совместно используемые несколькими объектами, а также могут быть сделаны доступными только для чтения для повышения производительности, могут клонироваться и делаться потокобезопасными. Дополнительные сведения о различных возможностях, предоставляемых объектами Freezable, см. в разделе Общие сведения об объектах класса Freezable.

Примечания для наследующих объектов:

Хотя это абстрактный класс, он не является открытым для расширения.

В данном примере демонстрируется создание составных фигур с помощью объектов класса 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. Помимо этого их можно использовать для отсечения и проверки попадания курсора.

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

Дополнительный код

Практическое руководство. Создание фигуры с помощью PathGeometryВ этом примере демонстрируется создание фигуры с помощью класса PathGeometry. Объекты PathGeometry состоят из одного или нескольких объектов PathFigure, где каждый PathFigure представляет «рисунок» или фигуру. Каждый объект PathFigure состоит из одного или нескольких объектов PathSegment, каждый из которых представляет переходную часть фигуры или формы. Типы сегментов включают LineSegment, ArcSegment и BezierSegment.
Практическое руководство. Анимация EllipseGeometryВ этом примере показана анимация Geometry внутри элемента Path. В следующем примере используется PointAnimation для анимации Center элемента EllipseGeometry.

Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.

Windows Vista

Среды .NET Framework и .NET Compact Framework поддерживают не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

.NET Framework

Поддерживается в версиях: 3.5, 3.0

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2014 Microsoft