2011-10-15 12 views
9

Jakie jest najlepsze rozwiązanie dla uzyskania środkowego punktu ArcSegment w ścieżce i oznaczenia go w WPF?Jak zdobyć Środkowy punkt ArcSegment w WPF

enter image description here

+0

Dobre pytanie. Zakładam, że musisz obliczyć to na podstawie pewnej kombinacji promienia i punktów środkowych? –

+0

Jeśli łuk jest w jakiś sposób powiązany z danym obiektem, możesz dodać właściwość z poprawną pozycją etykiety do viewmodelu lub zaimplementować konwerter, który robi to samo. Z drugiej strony, jeśli nie używasz wiązania danych, możesz po prostu obliczyć położenie etykiety w tym samym miejscu, w którym obliczasz parametry łuku. Jak ** Ritch ** wskazał, że możesz obliczyć pozycję na podstawie punktów końcowych, promienia i kąta ... –

+0

jakiejkolwiek próbki kodu? – ARZ

Odpowiedz

7

To powinno działać:

 //the given arc (or any other segments) 
     var arc = new ArcSegment(
      point: new Point(200, 100), 
      size: new Size(100, 50), 
      rotationAngle: 90, 
      isLargeArc: true, 
      sweepDirection: SweepDirection.Counterclockwise, 
      isStroked: true); 

     //compose one or more segments into a collection 
     var pathcoll = new PathSegmentCollection(); 
     pathcoll.Add(arc); 

     //create a figure based on the set of segments 
     var figure = new PathFigure(); 
     figure.Segments = pathcoll; 

     //compose a collection of figures 
     var figcoll = new PathFigureCollection(); 
     figcoll.Add(figure); 

     //create a path-geometry using the figures collection 
     var geom = new PathGeometry(figcoll); 

     double fraction = 0.5; //the relative point of the curve 
     Point pt;    //the absolute point of the curve 
     Point tg;    //the tangent point of the curve 
     geom.GetPointAtFractionLength(
      fraction, 
      out pt, 
      out tg); 

Nadzieję, że to pomaga.

Pozdrawiam

+1

"GetPointAtFractionLength'.to dokładnie to, czego potrzebowałem! dzięki. – ARZ

+0

kilka godzin wyszukiwania później i oto jesteśmy! Dzięki! – Craig

+0

GetPointAtFractionLength rozwiązało dla mnie tyle problemów. Świetne znalezisko! – Jon

Powiązane problemy