Udostępnij za pośrednictwem


StreamGeometryContext.PolyQuadraticBezierTo Metoda

Definicja

Rysuje co najmniej jedną połączoną krzywą Beziera.

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)

Parametry

points
IList<Point>

Kolekcja punktów określających punkty kontrolne i punkty docelowe dla co najmniej jednej krzywej Beziera kwadratowego. Pierwszy punkt na liście określa punkt kontrolny krzywej, następny punkt określa punkt docelowy, następny punkt określa punkt kontrolny następnej krzywej itd. Lista musi zawierać parzystą liczbę punktów.

isStroked
Boolean

true aby segment był pociągnięty, gdy Pen element jest używany do renderowania segmentu; w przeciwnym razie false.

isSmoothJoin
Boolean

true w celu traktowania sprzężenia między tym segmentem a poprzednim segmentem jako rogu po pociągnięciu wartością Pen; w przeciwnym razie false.

Wyjątki

Podjęto próbę dodania segmentu bez uruchomienia rysunku BeginFigure(Point, Boolean, Boolean) przez wywołanie metody .

Przykłady

W poniższym przykładzie pokazano, jak narysować wiele połączonych krzywych Beziera przy użyciu PolyQuadraticBezierTo metody .

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

Uwagi

Ta metoda używa punktu końcowego poprzedniego segmentu jako punktu początkowego. Jeśli jest to pierwszy segment na rysunku, używa punktu określonego przez metodę jako punktu początkowego BeginFigure .

Nie StreamGeometry można serializować elementu Transform , jeśli zawiera on segmenty niesuskane lub niesprawne.

Dotyczy

Zobacz też