Gewusst wie: zeichnen von Bézier-Kurve durch mehrere Punkte?
Ich habe mehrere Punkte, und ich versuche zu zeichnen Bezier-Kurve mit folgenden code
PathFigure pf = new PathFigure(points.From, ps, false); //ps - list of Bezier segments
PathFigureCollection pfc = new PathFigureCollection();
pfc.Add(pf);
var pge = new PathGeometry();
pge.Figures = pfc;
Path p = new Path();
p.Data = pge;
p.Stroke = new SolidColorBrush(Color.FromRgb(244, 111, 011));
Meine Bezier-Segmente wie folgt Aussehen
- 1,2,3 Punkte - erste segment
- 3,4,5 Punkte - zweite
- 5,6,7.. ..
Aber ich habe dieses seltsame Kurve (hier 3 große (Knoten) und 7 kleine ellipse (meine Punkte)):
Ich sehe es natürlich auch in dieser Abbildung können Sie einen link posten mit der gewünschten Kurve ?
Oder, vielleicht, Sie wollen, ziehen eine single-segment 7-Steuerung Punkten ?
Oder, vielleicht, Sie wollen, ziehen eine single-segment 7-Steuerung Punkten ?
InformationsquelleAutor Roman Bats | 2012-12-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Linie, die Sie bekommen, ist die Vereinigung von drei verschiedene Bezier-Kurven - eine für jede Gruppe drei Punkte. (Eine für jede "Bezier-segment"?)
Wenn Sie möchten, eine einzige, glatte Kurve, die Sie brauchen, um passieren Ihre 9 (oder mehr) Punkte wie eine einzelne Auflistung der Punkte (single "Bezier-segment"?), nicht als Gruppen von drei Punkte.
Edit: Anscheinend
BezierSegment
nur unterstützt drei Punkte, also kein Wunder, dass dies nicht funktioniert. Auch 'PolyBezierSegment' gibt nur eine Sammlung von Bezier-Segmente statt einer einzelnen glatten Bezier -...So, da WPF nicht, geben Sie etwas nützliches, ich klopfte etwas zusammen mit der Mathematik hier. Es ist eine numerische Lösung, aber es scheint ziemlich performant und auch mit genügend Punkte, um schön Aussehen und glatt:
Mithilfe dieser,
gibt
Falsche Näherung gemacht Steuern Weg Kreis und zeichnen Sie ein elipsoid. Müssen Sie möglicherweise zu überdenken, approximation, math.
href="http://stackoverflow.com/questions/1734745/how-to-create-circle-with-b%C3%A9zier-curves">Es ist unmöglich zu machen, ein Kreis, Béziers. Müssen Sie möglicherweise zu überdenken, wie einen Kreis zu zeichnen?
Vielen Dank, funktioniert sehr gut, aber ich fand die Linie 1 für GetBezierPoint werden musste, "wenn(count==0)"
InformationsquelleAutor Rawling
Da jede Ihrer Kurven hat Sie eine Kontroll-Punkt (ein Punkt, der Einflüsse der Kurve, aber nicht notwendigerweise auf der Kurve), bist du mit quadratischen Bézier-Kurven.
Wenn Sie möchten, zeichnen Sie zwei quadratischen Kurven, die einen gemeinsamen Endpunkt haben, und Sie wollen die joint-glatt erscheint, die Punkte auf jeder Seite der gemeinsamen Endpunkt muss kollinear mit dem Endpunkt. Das heißt, die zwei Kontrollpunkte und der Endpunkt zwischen Ihnen liegen alle auf einer geraden Linie. Beispiel:
Den schwarz-discs sind die Endpunkte. Die hohlen Kreise sind die Kontrollpunkte. Die durchgezogene schwarze Linie ist die Kurve. Die gestrichelten Linien zeigen, dass jeder Endpunkt ist kollinear (auf einer geraden Linie mit) den Kontrollpunkt auf beiden Seiten.
InformationsquelleAutor rob mayoff