GraphicsPathIterator.HasCurve Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.