GraphicsPathIterator.HasCurve Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt aangegeven of het pad dat aan dit GraphicsPathIterator pad is gekoppeld een curve bevat.
public:
bool HasCurve();
public bool HasCurve();
member this.HasCurve : unit -> bool
Public Function HasCurve () As Boolean
Retouren
Deze methode retourneert true als het huidige subpad een curve bevat; falseanders.
Voorbeelden
Het volgende voorbeeld is ontworpen voor gebruik met Windows Forms en vereist PaintEventArgse, een OnPaint-gebeurtenisobject. De code voert de volgende acties uit:
Hiermee maakt u een GraphicsPath object,
myPath.Hiermee voegt u drie regels, een rechthoek en een beletselteken toe.
Hiermee maakt u een GraphicsPathIterator object voor
myPath.Tests om te zien of het huidige pad
myPatheen curve bevat.Geeft het resultaat van de test weer in een berichtvak.
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
Opmerkingen
Alle curven in een pad worden opgeslagen als reeksen van Bézier splines. Wanneer u bijvoorbeeld een weglatingsteken toevoegt aan een pad, geeft u de linkerbovenhoek, de breedte en de hoogte van de begrenzingsrechthoek van het beletselteken op. Deze getallen (linkerbovenhoek, breedte en hoogte) worden niet opgeslagen in het pad; in plaats daarvan; het beletselteken wordt omgezet in een reeks van vier Bézier splines. Het pad slaat de eindpunten en besturingspunten van deze Bézier-splines op.
In een pad wordt een matrix met gegevenspunten opgeslagen, die allemaal deel uitmaken van een lijn of een Bézier-spline. Als sommige van de punten in de matrix deel uitmaken van Bézier splines, retourneert HasCurvetrueu . Als alle punten in de matrix deel uitmaken van lijnen, wordt HasCurve het resultaat geretourneerd false.
Bepaalde methoden maken een pad plat, wat betekent dat alle curven in het pad worden geconverteerd naar reeksen lijnen. Nadat een pad is afgevlakt, HasCurve keert u altijd terug false. Als u de Flatten, Widenof Warp methode van de GraphicsPath klasse aanroept, wordt een pad afgevlakt.