2012-08-31 24 views
5

Jaki jest najprostszy sposób narysowania strzałki pod koniec QuadraticBezierSegment? Najtrudniejszą częścią jest uzyskanie prawidłowego obrotu, aby obrobić przychodzący segment linii.Rysowanie końca strzałki na segmencie kwadratu Béziera za pomocą xaml

Jakieś pomysły na to, jak sobie z tym poradzić? Czy powinienem przedłużyć PathSegment?

Bezier segment with an arrow at the end

Mam to do rysowania prostych linii Beziera.

<Path Stroke="Black" StrokeThickness="1"> 
    <Path.Data> 
    <PathGeometry> 
     <PathGeometry.Figures> 
     <PathFigureCollection> 
      <PathFigure StartPoint="100,430"> 
      <PathFigure.Segments> 
       <PathSegmentCollection> 
       <QuadraticBezierSegment Point1="150,250" Point2="250,300" /> 
       </PathSegmentCollection> 
      </PathFigure.Segments> 
      </PathFigure> 
     </PathFigureCollection> 
     </PathGeometry.Figures> 
    </PathGeometry> 
    </Path.Data> 
</Path> 
+1

Czy 'Path' twoich' QuadraticBezierSegment' statyczny? (Wygląda na to z twojego kodu, ale wspomniałeś, że strzałka jest wyrównana z segmentem, więc nie jestem pewna) – Rachel

+0

Tak, to jest statyczne, ale byłoby to wygodne, gdyby obrót został obliczony automatycznie. – vidstige

Odpowiedz

8

Można określić geometrię do głowy strzałki .... ale zajęłoby prób i błędów do prawidłowego ukierunkowania go na końcu krzywej Beziera.

Zamiast tego można użyć tej kontrolki i zdefiniować nasadkę, która ma zostać użyta w geometrii, a następnie poprawnie umieścić ją na końcu "linii".

  • http://blogs.msdn.com/b/mrochon/archive/2011/01/10/custom-line-caps-in-wpf.aspx

    <loc:CappedLine Stroke="Red" StrokeThickness="1" Canvas.Left="40" Canvas.Top="200" RenderTransformOrigin="0.5,0.5" Height="107" Width="195"> 
        <loc:CappedLine.EndCap> 
         <GeometryGroup> 
          <LineGeometry StartPoint="0,0" EndPoint="10,10"/> 
          <LineGeometry StartPoint="0,0" EndPoint="10,-10"/> 
         </GeometryGroup> 
        </loc:CappedLine.EndCap> 
        <loc:CappedLine.LinePath> 
         <PathGeometry Figures="M0,0 C1,1 10.5,75.5 48.5,66.5 86.5,57.5 5,3.5000146 105.5,16.500091 157.5,29.500166 164.5,87.500505 164.5,87.500505" /> 
        </loc:CappedLine.LinePath> 
    </loc:CappedLine> 
    
    <loc:CappedLine Stroke="Red" StrokeThickness="1" Canvas.Left="180" Canvas.Top="200" RenderTransformOrigin="0.5,0.5" Height="107" Width="195"> 
        <loc:CappedLine.EndCap> 
         <GeometryGroup> 
          <LineGeometry StartPoint="0,0" EndPoint="10,10"/> 
          <LineGeometry StartPoint="0,0" EndPoint="10,-10"/> 
         </GeometryGroup> 
        </loc:CappedLine.EndCap> 
        <loc:CappedLine.LinePath> 
         <PathGeometry Figures="M0,0 C1,1 10.5,75.5 48.5,66.5 86.5,57.5 5,3.5000146 105.5,16.500091" /> 
        </loc:CappedLine.LinePath> 
    </loc:CappedLine> 
    

enter image description here

Powiązane problemy