Esporta (0) Stampa
Espandi tutto

Classe Geometry

Aggiornamento: novembre 2007

Le classi derivanti da questa classe di base astratta definiscono forme geometriche. È possibile utilizzare gli oggetti Geometry per eseguire il ridimensionamento, l'hit testing e il rendering di dati grafici bidimensionali.

Spazio dei nomi:  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
Questa classe è astratta; per le classi derivate non astratte utilizzabili in XAML, vedere Gerarchia di ereditarietà.

Confronto tra geometria e forma

La classe System.Windows.Shapes.Shape presenta le proprietà Fill e Stroke nonché altre proprietà di rendering non disponibili per la classe Geometry e le relative classi derivate. La classe Shape è un oggetto FrameworkElement ed è pertanto inclusa nel sistema di layout. Le relative classi derivate possono essere utilizzate come contenuto di qualsiasi elemento che supporta gli oggetti figlio della classe UIElement.

La classe Geometry, d'altra parte, definisce semplicemente la geometria di una forma e non può eseguire il rendering di se stessa. A causa della relativa semplicità presenta un raggio di utilizzo più ampio.

Funzionalità della classe Freezable: poiché eredita dalla classe Freezable, la classe Geometry fornisce diverse funzionalità speciali. Gli oggetti Geometry possono essere dichiarati come risorse, condivisi tra più oggetti, resi disponibili in sola lettura per migliorare le prestazioni, duplicati nonché resi thread-safe. Per ulteriori informazioni sulle diverse funzionalità disponibili per gli oggetti Freezable, vedere Cenni preliminari sugli oggetti Freezable.

Note per gli eredi:

Pur essendo astratta, tale classe non può essere estesa pubblicamente.

In questo esempio viene mostrato come creare forme composte utilizzando gli oggetti Geometry e come visualizzarle tramite un elemento Path. Nell'esempio seguente, vengono utilizzati gli oggetti LineGeometry, EllipseGeometry e RectangleGeometry con GeometryGroup per creare una forma composta. Le geometrie vengono quindi disegnate utilizzando 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;


Nella figura seguente viene mostrata la forma creata nell'esempio precedente.

Geometria composta

Geometria composta creata con GeometryGroup

Forme più complesse, ad esempio poligoni e forme con segmenti curvi, possono essere create utilizzando PathGeometry. Per un esempio in cui viene mostrato come creare una forma utilizzando PathGeometry, vedere Procedura: creare una forma tramite un oggetto PathGeometry. Sebbene in questo esempio venga eseguito il rendering di una forma sullo schermo utilizzando un elemento Path, è anche possibile utilizzare gli oggetti Geometry per descrivere il contenuto di un oggetto GeometryDrawing o di un oggetto DrawingContext. Tali oggetti possono essere utilizzati anche per ritagliare e per eseguire l'hit test.

Per la versione completa dell'esempio di cui questo fa parte, vedere Esempio di geometrie.

Altro codice

Procedura: creare una forma tramite un oggetto PathGeometryIn questo esempio viene illustrato come creare una forma utilizzando la classe PathGeometry. Gli oggetti PathGeometry sono composti da uno o più oggetti PathFigure, ciascuno dei quali rappresenta una figura, o forma, diversa. Ciascun oggetto PathFigure è a sua volta composto da uno o più oggetti PathSegment, ciascuno dei quali rappresenta una parte collegata della figura o forma. I tipi di segmenti comprendono LineSegment, ArcSegment e BezierSegment.
Procedura: aggiungere un'animazione a un oggetto EllipseGeometryIn questo esempio viene illustrato come aggiungere un'animazione a un oggetto Geometry all'interno di un elemento Path. Nell'esempio seguente viene utilizzato un oggetto PointAnimation per aggiungere un'animazione a un oggetto Center di un oggetto EllipseGeometry.

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Windows Vista

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft