GraphicsPathIterator.HasCurve Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Indica se il percorso associato a questa GraphicsPathIterator contiene una curva.
public:
bool HasCurve();
public bool HasCurve ();
member this.HasCurve : unit -> bool
Public Function HasCurve () As Boolean
Restituisce
Questo metodo restituisce true
se il sottopercorso corrente contiene una curva; in caso contrario, false
.
Esempio
L'esempio seguente è progettato per l'uso con Windows Form e richiede PaintEventArgse
, un oggetto evento OnPaint. Il codice esegue le azioni seguenti:
Crea un oggetto GraphicsPath,
myPath
.Aggiunge tre righe, un rettangolo e un'ellisse.
Crea un oggetto GraphicsPathIterator per
myPath
.Verifica se il percorso corrente
myPath
contiene una curva.Mostra il risultato del test in una finestra di messaggio.
private:
void HasCurveExample( PaintEventArgs^ /*e*/ )
{
// Create a path and add three lines,
// a rectangle and an ellipse.
GraphicsPath^ myPath = gcnew GraphicsPath;
array<Point>^ myPoints = {Point(20,20),Point(120,120),Point(20,120),Point(20,20)};
Rectangle myRect = Rectangle(120,120,100,100);
myPath->AddLines( myPoints );
myPath->AddRectangle( myRect );
myPath->AddEllipse( 220, 220, 100, 100 );
// Create a GraphicsPathIterator for myPath.
GraphicsPathIterator^ myPathIterator = gcnew GraphicsPathIterator( myPath );
// Test for a curve.
bool myHasCurve = myPathIterator->HasCurve();
// Show the test result.
MessageBox::Show( myHasCurve.ToString() );
}
private void HasCurveExample(PaintEventArgs e)
{
// Create a path and add three lines,
// a rectangle and an ellipse.
GraphicsPath myPath = new GraphicsPath();
Point[] myPoints = {new Point(20, 20), new Point(120, 120),
new Point(20, 120),new Point(20, 20) };
Rectangle myRect = new Rectangle(120, 120, 100, 100);
myPath.AddLines(myPoints);
myPath.AddRectangle(myRect);
myPath.AddEllipse(220, 220, 100, 100);
// Create a GraphicsPathIterator for myPath.
GraphicsPathIterator myPathIterator = new
GraphicsPathIterator(myPath);
// Test for a curve.
bool myHasCurve = myPathIterator.HasCurve();
// Show the test result.
MessageBox.Show(myHasCurve.ToString());
}
Public Sub HasCurveExample(ByVal e As PaintEventArgs)
Dim myPath As New GraphicsPath
Dim myPoints As Point() = {New Point(20, 20), _
New Point(120, 120), New Point(20, 120), New Point(20, 20)}
Dim myRect As New Rectangle(120, 120, 100, 100)
myPath.AddLines(myPoints)
myPath.AddRectangle(myRect)
myPath.AddEllipse(220, 220, 100, 100)
' Create a GraphicsPathIterator for myPath.
Dim myPathIterator As New GraphicsPathIterator(myPath)
Dim myHasCurve As Boolean = myPathIterator.HasCurve()
MessageBox.Show(myHasCurve.ToString())
End Sub
Commenti
Tutte le curve in un percorso vengono archiviate come sequenze di spline di Bézier. Ad esempio, quando si aggiunge un'ellisse a un percorso, si specificano l'angolo superiore sinistro, la larghezza e l'altezza del rettangolo di delimitazione dell'ellisse. Tali numeri (angolo superiore sinistro, larghezza e altezza) non vengono archiviati nel percorso; invece; l'ellisse viene convertita in una sequenza di quattro spline di Bézier. Il percorso archivia gli endpoint e i punti di controllo di tali spline bézier.
Un percorso archivia una matrice di punti dati, ognuno dei quali appartiene a una linea o a una spline di Bézier. Se alcuni dei punti della matrice appartengono alle spline di Bézier, HasCurve restituisce true
. Se tutti i punti della matrice appartengono a righe, HasCurve restituisce false
.
Alcuni metodi appiattino un percorso, il che significa che tutte le curve del percorso vengono convertite in sequenze di linee. Dopo che un percorso è stato appiattito, HasCurve restituirà sempre false
. La chiamata al metodo Flatten, Wideno Warp della classe GraphicsPath appiattirà un percorso.