Bagikan melalui


GraphicsPathIterator.HasCurve Metode

Definisi

Menunjukkan apakah jalur yang terkait dengan GraphicsPathIterator ini berisi kurva.

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

Mengembalikan

Metode ini mengembalikan true jika subpath saat ini berisi kurva; jika tidak, false.

Contoh

Contoh berikut dirancang untuk digunakan dengan Windows Forms, dan memerlukan PaintEventArgse, objek peristiwa OnPaint. Kode melakukan tindakan berikut:

  • Membuat objek GraphicsPath, myPath.

  • Menambahkan tiga baris, persegi panjang, dan elips.

  • Membuat objek GraphicsPathIterator untuk myPath.

  • Pengujian untuk melihat apakah jalur saat ini myPath berisi kurva.

  • Memperlihatkan hasil pengujian dalam kotak pesan.

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

Keterangan

Semua kurva dalam jalur disimpan sebagai urutan spline Bézier. Misalnya, saat Anda menambahkan elips ke jalur, Anda menentukan sudut kiri atas, lebar, dan tinggi persegi panjang pembatas elips. Angka-angka tersebut (sudut kiri atas, lebar, dan tinggi) tidak disimpan di jalur; Sebaliknya; elips dikonversi ke urutan empat spline Bézier. Jalur ini menyimpan titik akhir dan titik kontrol spline Bézier tersebut.

Jalur menyimpan array titik data, yang masing-masing termasuk dalam garis atau spline Bézier. Jika beberapa titik dalam array termasuk dalam spline Bézier, maka HasCurve mengembalikan true. Jika semua titik dalam array milik baris, maka HasCurve mengembalikan false.

Metode tertentu meratakan jalur, yang berarti bahwa semua kurva di jalur dikonversi ke urutan garis. Setelah jalur diratakan, HasCurve akan selalu kembali false. Memanggil metode Flatten, Widen, atau Warp dari kelas GraphicsPath akan meratakan jalur.

Berlaku untuk