Teilen über


GraphicsPathIterator.HasCurve Methode

Definition

Gibt an, ob der diesem GraphicsPathIterator zugeordnete Pfad eine Kurve enthält.

public:
 bool HasCurve();
public bool HasCurve ();
member this.HasCurve : unit -> bool
Public Function HasCurve () As Boolean

Gibt zurück

Diese Methode gibt true zurück, wenn der aktuelle Unterpfad eine Kurve enthält; andernfalls false.

Beispiele

Das folgende Beispiel wurde für die Verwendung mit Windows Forms entwickelt und erfordert PaintEventArgse, ein OnPaint-Ereignisobjekt. Der Code führt die folgenden Aktionen aus:

  • Erstellt ein GraphicsPath -Objekt, myPath.

  • Fügt drei Linien, ein Rechteck und eine Ellipse hinzu.

  • Erstellt ein GraphicsPathIterator -Objekt für myPath.

  • Überprüft, ob der aktuelle Pfad myPath eine Kurve enthält.

  • Zeigt das Ergebnis des Tests in einem Meldungsfeld an.

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

Hinweise

Alle Kurven in einem Pfad werden als Sequenzen von Bézier splines gespeichert. Wenn Sie z. B. einen Ellipsen zu einem Pfad hinzufügen, geben Sie die obere linke Ecke, die Breite und die Höhe des umgebenden Rechtecks der Ellipse an. Diese Zahlen (obere linke Ecke, Breite und Höhe) werden nicht im Pfad gespeichert; stattdessen; die Ellipse wird in eine Sequenz von vier Bézier splines konvertiert. Der Pfad speichert die Endpunkte und Kontrollpunkte dieser Bézier splines.

Ein Pfad speichert ein Array von Datenpunkten, die jeweils zu einer Linie oder einer Bézier-Spline gehören. Wenn einige der Punkte im Array zu Bézier splines gehören, gibt HasCurvetruezurück. Wenn alle Punkte im Array zu Linien gehören, gibt HasCurvefalsezurück.

Bestimmte Methoden flachten einen Pfad, was bedeutet, dass alle Kurven im Pfad in Zeilenabfolgen konvertiert werden. Nachdem ein Pfad abgeflacht wurde, wird HasCurve immer falsezurückgegeben. Durch Aufrufen der Flatten-, Widen- oder Warp-Methode der GraphicsPath Klasse wird ein Pfad flacher.

Gilt für: