GraphicsPathIterator.HasCurve Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет, содержит ли контур, связанный с этим объектом GraphicsPathIterator, кривую.
public:
bool HasCurve();
public bool HasCurve ();
member this.HasCurve : unit -> bool
Public Function HasCurve () As Boolean
Возвращаемое значение
Метод возвращает значение true
, если текущий субконтур содержит кривую; в противном случае он возвращает значение false
.
Примеры
Следующий пример предназначен для использования с Windows Forms, и для него требуется PaintEventArgse
OnPaint объект события . Код выполняет следующие действия.
Создает GraphicsPath объект
myPath
.Добавляет три линии, прямоугольник и эллипс.
Создает GraphicsPathIterator объект для
myPath
.Проверяет, содержит ли текущий путь
myPath
кривую.Показывает результат теста в окне сообщения.
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
Комментарии
Все кривые в пути хранятся в виде последовательностей сплайнов Безье. Например, при добавлении эллипса в путь указывается левый верхний угол, ширина и высота ограничивающего прямоугольника эллипса. Эти числа (верхний левый угол, ширина и высота) не хранятся в пути; Вместо; эллипс преобразуется в последовательность из четырех сплайнов Безье. В пути хранятся конечные точки и контрольные точки этих сплайнов Безье.
В пути хранится массив точек данных, каждая из которых принадлежит строке или сплайну Безье. Если некоторые точки в массиве принадлежат сплайнам Безье, возвращает HasCurve .true
Если все точки в массиве принадлежат к линиям, возвращается HasCurvefalse
.
Некоторые методы преобразовывают путь в плоскую структуру, что означает, что все кривые в пути преобразуются в последовательности линий. После того как путь был преобразован в плоскую структуру, HasCurve всегда возвращает .false
FlattenВызов метода , Widenили Warp класса приведет к GraphicsPath обравнив путь в плоскую структуру.
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по