Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Geometry-Klasse

Aktualisiert: November 2007

Von dieser abstrakten Basisklasse abgeleitete Klassen definieren geometrische Formen. Geometry-Objekte können zum Ausschneiden, zum Durchführen von Treffertests und zum Rendern von 2D-Grafikdaten verwendet werden.

Namespace:  System.Windows.Media
Assembly:  PresentationCore (in 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
Diese Klasse ist abstrakt, unter Vererbungshierarchie finden Sie abgeleitete, nicht abstrakte Klassen für XAML.

Geometry im Vergleich zu Shape

Im Gegensatz zu Geometry und den von ihr abgeleiteten Klassen verfügt die System.Windows.Shapes.Shape-Klasse über die Eigenschaften Fill, Stroke und weitere Renderingeigenschaften. Da es sich bei der Shape-Klasse um ein FrameworkElement handelt, ist sie eine Komponente des Layoutsystems. Die von ihr abgeleiteten Klassen können als Inhalt eines beliebigen Elements verwendet werden, das untergeordnete Elemente von UIElement unterstützt.

Hingegen definiert die Geometry-Klasse lediglich die Geometrie einer Form und kann nicht selbst gerendert werden. Aufgrund ihrer Einfachheit verfügt sie über einen größeren Verwendungsbereich.

Features von Freezable: Weil die Geometry-Klasse von der Freezable-Klasse erbt, stellt sie mehrere spezielle Features bereit: Geometry-Objekte können als Ressourcen deklariert, von mehreren Objekten gleichzeitig verwendet, für eine höhere Leistung als schreibgeschützt definiert, geklont und als threadsicher festgelegt werden. Weitere Informationen über die verschiedenen von Freezable-Objekten bereitgestellten Features finden Sie unter Übersicht über Freezable-Objekte.

Hinweise zur Vererbung:

Diese Klasse ist zwar abstrakt, jedoch nicht öffentlich erweiterbar.

Dieses Beispiel zeigt, wie Sie zusammengesetzte Formen erstellen, indem Sie Geometry-Objekte verwenden, und diese anzeigen, indem Sie ein Path-Element verwenden. Im folgenden Beispiel werden eine LineGeometry, eine EllipseGeometry und eine RectangleGeometry zusammen mit GeometryGroup verwendet, um eine zusammengesetzte Form zu erstellen. Die Geometrien werden dann mithilfe eines Path-Elements gezeichnet.

<!-- 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;


In der folgenden Abbildung wird die im vorherigen Beispiel erstellte Form dargestellt.

Zusammengesetzte Geometrie
Eine zusammengesetzte Geometrie, die mit einer GeometryGroup erstellt wird

Komplexere Formen, zum Beispiel Polygone und Formen mit gekrümmten Segmenten, können Sie mithilfe einer PathGeometry erstellen. Ein Beispiel für die Erstellung einer Form mithilfe einer PathGeometry finden Sie unter Gewusst wie: Erstellen einer Form mithilfe von PathGeometry. Obwohl in diesem Beispiel eine Form auf dem Bildschirm mithilfe eines Path-Elements gerendert wird, können Sie auch Geometry-Objekte verwenden, um den Inhalt eines GeometryDrawing- oder DrawingContext-Elements zu beschreiben. Sie können die Objekte auch für das Clipping und für Treffertests verwenden.

Dieses Beispiel ist Teil eines größeren Beispiels. Das vollständige Beispiel finden Sie unter Beispiele zu Geometrie.

Weiterer Code

Gewusst wie: Erstellen einer Form mithilfe von PathGeometryIn diesem Beispiel wird veranschaulicht, wie Sie eine Form mithilfe der PathGeometry-Klasse erstellen. PathGeometry-Objekte bestehen aus einem oder mehreren PathFigure-Objekten. Jedes PathFigure-Element stellt eine andere "Abbildung" oder Form dar. Jedes PathFigure-Objekt setzt sich wiederum aus einem oder mehreren PathSegment-Objekten zusammen, die jeweils einen verknüpften Bereich der Abbildung oder Form darstellen. Zu den Segmenttypen gehören LineSegment, ArcSegment, und BezierSegment.
Gewusst wie: Animieren eines "EllipseGeometry"-ElementsDieses Beispiel zeigt, wie Sie ein Geometry-Element innerhalb eines Path-Elements animieren. Im folgenden Beispiel wird PointAnimation verwendet, um das Center-Element einer EllipseGeometry zu animieren.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0
Anzeigen: