Cette documentation est archivée et n’est pas conservée.

Geometry, classe

Mise à jour : novembre 2007

Les classes qui dérivent de cette classe de base abstraite définissent des formes géométriques. Les objets Geometry peuvent être utilisés pour les découpages, les tests d'atteinte et la restitution de données graphiques 2 D.

Espace de noms :  System.Windows.Media
Assembly :  PresentationCore (dans 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
Cette classe est abstraite ; consultez Hiérarchie d'héritage pour connaître les classes non abstraites dérivées qui peuvent être utilisées en XAML.

Comparaison de Geometry avec Shape

La classe System.Windows.Shapes.Shape a un Fill, Stroke et d'autres propriétés de rendu qui manquent à Geometry et ses classes dérivées. La classe Shape est un FrameworkElement et par conséquent participe au système de disposition ; ses classes dérivées peuvent être utilisées comme contenu de tout élément qui prend en charge des enfants UIElement.

La classe Geometry, en revanche, définit simplement la géométrie d'une forme et ne peut pas se restituer. En raison de sa simplicité, elle a une plage d'utilisation plus large.

Fonctionnalités Freezable : dans la mesure où elle hérite de la classe Freezable, la classe Geometry propose plusieurs fonctionnalités spéciales : les objets Geometry peuvent être déclarés en tant que ressources, partagés entre plusieurs objets, définis en lecture seule pour améliorer les performances, clonés et thread-safe. Pour plus d'informations sur les différentes fonctionnalités fournies par les objets Freezable, consultez Vue d'ensemble des objets Freezable.

Remarques à l'attention des héritiers :

Bien que cette classe soit abstraite, elle n'est pas extensible publiquement.

Cet exemple montre comment créer des formes composites à l'aide d'objets Geometry et les afficher à l'aide d'un élément Path. Dans l'exemple suivant, une LineGeometry, une EllipseGeometry et un RectangleGeometry sont utilisés avec un GeometryGroup pour créer une forme composite. Les géométries sont ensuite dessinées à l'aide d'un élément 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;


L'illustration suivante montre la forme créée dans l'exemple précédent.

Géométrie composite

Géométrie composée créée à l'aide de GeometryGroup

Il est possible de créer des formes plus complexes, telles que des polygones et des formes intégrant des segments courbés, à l'aide d'un PathGeometry. Pour obtenir un exemple montrant comment créer une forme à l'aide d'un PathGeometry, consultez Comment : créer une forme à l'aide d'un PathGeometry. Bien que cet exemple restitue une forme à l'écran à l'aide d'un élément Path, des objets Geometry peuvent également être utilisés pour décrire le contenu d'un GeometryDrawing ou d'un DrawingContext. Ils peuvent également être utilisés pour des découpages et des tests d'atteinte.

Cet exemple est extrait d'un exemple plus complet ; pour y accéder, consultez Géométries, exemple.

Davantage de code

Comment : créer une forme à l'aide d'un PathGeometryCet exemple montre comment créer une forme à l'aide de la classe PathGeometry. Les objets PathGeometry sont composés d'un ou plusieurs objets PathFigure; chaque PathFigure représentant une "illustration" ou forme différente. Chaque PathFigure est lui-même composé d'un ou plusieurs objets PathSegment, chacun représentant une partie connectée de l'illustration ou forme. Les types de segments incluent LineSegment, ArcSegment et BezierSegment.
Comment : animer un EllipseGeometryCet exemple indique comment animer un Geometry dans un élément Path. Dans l'exemple suivant, un PointAnimation est utilisé pour animer le Center d'un EllipseGeometry.

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows Vista

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0
Afficher: