Exportar (0) Imprimir
Expandir todo

Geometry (Clase)

Actualización: noviembre 2007

Las clases que se derivan de esta clase base abstracta definen las formas geométricas. Los objetos Geometry se pueden utilizar para recortar, realizar pruebas de acceso y representar datos de gráficos 2D.

Espacio de nombres:  System.Windows.Media
Ensamblado:  PresentationCore (en 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
Esta clase es abstracta; vea en Jerarquía de herencia las clases derivadas no abstractas utilizables en XAML.

Comparación entre Geometry y Shape

La clase System.Windows.Shapes.Shape tiene las propiedades Fill, Stroke y otras propiedades de representación que Geometry y sus clases derivadas no tienen. La clase Shape es una clase FrameworkElement y, por consiguiente, participa en el sistema de diseño; sus clases derivadas pueden utilizarse como contenido de cualquier elemento que admita elementos secundarios de UIElement.

La clase Geometry, por otro lado, simplemente define la geometría de una forma y no puede representarse a sí misma. Debido a su simplicidad, se puede usar de manera más amplia.

Características de elementos Freezable: Como hereda de la clase Freezable, la clase Geometry proporciona varias características especiales: los objetos Geometry se pueden declarar como recursos, se pueden compartir entre varios objetos, se puede hacer que sean de sólo lectura para mejorar el rendimiento, se pueden clonar y se pueden hacer seguros para subprocesos. Para obtener más información acerca de las diferentes características que proporcionan los objetos Freezable, vea Información general sobre objetos Freezable.

Notas para los herederos:

Aunque esta clase es abstracta, no es públicamente extensible.

En este ejemplo se muestra cómo crear formas compuestas mediante objetos Geometry y mostrarlas utilizando un elemento Path. En el ejemplo siguiente, se utilizan LineGeometry, EllipseGeometry y RectangleGeometry con GeometryGroup para crear una forma compuesta. A continuación, las geometrías se dibujan mediante un elemento 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;


En la ilustración siguiente se muestra la forma creada en el ejemplo anterior.

Geometría compuesta
Geometría compuesta creada mediante GeometryGroup

Se pueden crear formas más complejas, tales como polígonos y formas con segmentos curvados, utilizando un objeto PathGeometry. Para obtener un ejemplo que muestra cómo crear una forma mediante PathGeometry, vea Cómo: Crear una forma mediante una clase PathGeometry. Aunque en este ejemplo se representa una forma en la pantalla mediante un elemento Path, también se pueden utilizar objetos Geometry para describir el contenido de GeometryDrawing o DrawingContext. Además, se pueden utilizar para el recorte y las pruebas de posicionamiento.

Este ejemplo forma parte de un ejemplo más extenso; para obtener el ejemplo completo, vea Ejemplo Geometries.

Más código

Cómo: Crear una forma mediante una clase PathGeometryEn este ejemplo se muestra cómo crear una forma mediante la clase PathGeometry. Los objetos PathGeometry están compuestos de uno o más objetos PathFigure; cada PathFigure representa una "figura" o forma diferente. Cada PathFigure, a su vez, está compuesta de uno o varios objetos PathSegment, cada uno de los cuales representa una parte conectada de la figura o forma. Los tipos de segmentos incluyen: LineSegment, ArcSegment y BezierSegment.
Cómo: Animar un EllipseGeometryEn este ejemplo se muestra cómo animar un Geometry dentro de un Path. En el ejemplo siguiente se usa PointAnimation para animar la propiedad Center de EllipseGeometry.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft