StreamGeometryContext.PolyQuadraticBezierTo Метод

Определение

Рисует одну или более соединенных кривых Безье второго порядка.

public:
 abstract void PolyQuadraticBezierTo(System::Collections::Generic::IList<System::Windows::Point> ^ points, bool isStroked, bool isSmoothJoin);
public abstract void PolyQuadraticBezierTo (System.Collections.Generic.IList<System.Windows.Point> points, bool isStroked, bool isSmoothJoin);
abstract member PolyQuadraticBezierTo : System.Collections.Generic.IList<System.Windows.Point> * bool * bool -> unit
Public MustOverride Sub PolyQuadraticBezierTo (points As IList(Of Point), isStroked As Boolean, isSmoothJoin As Boolean)

Параметры

points
IList<Point>

Коллекция точек, определяющих контрольные и конечные точки одной или более кривых Безье второго порядка. Первая точка в этом списке определяет контрольную точку кривой, вторая — конечную точку, следующая точка определяет контрольную точку следующей кривой и т. д. Данный список должен содержать четное количество точек.

isStroked
Boolean

true, чтобы сегмент был обведенным, когда для его визуализации используется Pen; в противном случае — false.

isSmoothJoin
Boolean

true для интерпретации соединения между этим и предыдущим сегментами как угла при обводке с помощью Pen; в противном случае — false.

Исключения

Предпринята попытка добавить сегмент без запуска фигуры путем вызова метода BeginFigure(Point, Boolean, Boolean).

Примеры

В следующем примере показано, как нарисовать несколько подключенных квадратических кривых Безье с помощью PolyQuadraticBezierTo метода.

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Shapes;
using System.Collections.Generic;

namespace SDKSample
{
    public partial class StreamGeometryPolyQuadraticBezierToExample : Page
    {
        public StreamGeometryPolyQuadraticBezierToExample()
        {
            // Create a path to draw a geometry with.
            Path myPath = new Path();
            myPath.Stroke = Brushes.Black;
            myPath.StrokeThickness = 1;

            // Create a StreamGeometry to use to specify myPath.
            StreamGeometry geometry = new StreamGeometry();
            geometry.FillRule = FillRule.EvenOdd;

            // Open a StreamGeometryContext that can be used to describe this StreamGeometry object's contents. 
            using (StreamGeometryContext ctx = geometry.Open())
            {
                // Set the begin point of the shape.
                ctx.BeginFigure(new Point(10, 100), true /* is filled */, false /* is closed */);

                // Create a collection of Point structures that will be used with the PolyQuadraticBezierTo 
                // Method to create two quadratic Bezier curves.
                List<Point> pointList = new List<Point>();

                // First quadratic Bezier curve is specified with these two points.

                // Control point for first quadratic Bezier curve.
                pointList.Add(new Point(100, 0));

                // End point for first quadratic Bezier curve.
                pointList.Add(new Point(200, 200));

                // Second quadratic Bezier curve is specified with these two points.

                // Control point for second quadratic Bezier curve.
                pointList.Add(new Point(300, 300));

                // End point for second quadratic Bezier curve.
                pointList.Add(new Point(400, 100));

                // Create a Bezier curve using the collection of Point Structures.
                ctx.PolyQuadraticBezierTo(pointList, true /* is stroked */, false /* is smooth join */);
            }

            // Freeze the geometry (make it unmodifiable)
            // for additional performance benefits.
            geometry.Freeze();
            
            // specify the shape (quadratic Benzier curve) of the path using the StreamGeometry.
            myPath.Data = geometry;

            // Add path shape to the UI.
            StackPanel mainPanel = new StackPanel();
            mainPanel.Children.Add(myPath);
            this.Content = mainPanel;
        }
    }
}

Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Media
Imports System.Windows.Shapes
Imports System.Collections.Generic

Namespace SDKSample
    Partial Public Class StreamGeometryPolyQuadraticBezierToExample
        Inherits Page
        Public Sub New()
            ' Create a path to draw a geometry with.
            Dim myPath As New Path()
            myPath.Stroke = Brushes.Black
            myPath.StrokeThickness = 1

            ' Create a StreamGeometry to use to specify myPath.
            Dim geometry As New StreamGeometry()
            geometry.FillRule = FillRule.EvenOdd

            ' Open a StreamGeometryContext that can be used to describe this StreamGeometry object's contents. 
            Using ctx As StreamGeometryContext = geometry.Open()
                ' Set the begin point of the shape.
                ctx.BeginFigure(New Point(10, 100), True, False) ' is closed  -  is filled 

                ' Create a collection of Point structures that will be used with the PolyQuadraticBezierTo 
                ' Method to create two quadratic Bezier curves.
                Dim pointList As New List(Of Point)()

                ' First quadratic Bezier curve is specified with these two points.

                ' Control point for first quadratic Bezier curve.
                pointList.Add(New Point(100, 0))

                ' End point for first quadratic Bezier curve.
                pointList.Add(New Point(200, 200))

                ' Second quadratic Bezier curve is specified with these two points.

                ' Control point for second quadratic Bezier curve.
                pointList.Add(New Point(300, 300))

                ' End point for second quadratic Bezier curve.
                pointList.Add(New Point(400, 100))

                ' Create a Bezier curve using the collection of Point Structures.
                ctx.PolyQuadraticBezierTo(pointList, True, False) ' is smooth join  -  is stroked 

            End Using

            ' Freeze the geometry (make it unmodifiable)
            ' for additional performance benefits.
            geometry.Freeze()

            ' specify the shape (quadratic Benzier curve) of the path using the StreamGeometry.
            myPath.Data = geometry

            ' Add path shape to the UI.
            Dim mainPanel As New StackPanel()
            mainPanel.Children.Add(myPath)
            Me.Content = mainPanel
        End Sub
    End Class
End Namespace

Комментарии

Этот метод использует конечную точку предыдущего сегмента в качестве начальной точки. Если это первый сегмент на рисунке, он использует точку, указанную методом BeginFigure в качестве начальной точки.

Не StreamGeometry удается сериализовать, если он содержит сегменты Transform , не заполненные или неразглавенные.

Применяется к

См. также раздел