WPF: come porre / forma oggetto alla fine di un percorso in linea / ictus?
Domanda
Voglio solo chiedere se c'è un modo in cui ho potuto mettere un oggetto (cerchio) al termine di un particolare percorso di linea.
simile al seguente:
--------------------------------------------O
Start End
In questo momento, ho il seguente codice per tracciare la linea:
<Grid x:Name="LayoutRoot" >
<Path Stroke="Red" StrokeThickness="4" x:Name="path4" Data="{Binding MyProperty1}" >
<Path.StrokeDashArray>
<System:Double>500</System:Double>
<System:Double>1000</System:Double>
</Path.StrokeDashArray>
</Path>
</Grid>
dove i dati del mio percorso (per esempio M532,668 L523,695 361.663 101.678 117.638) varia.
mia animazione assomiglia a questo ...
<Storyboard x:Key="Story1" RepeatBehavior="Forever">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00"
Storyboard.TargetName="path1"
Storyboard.TargetProperty="(Shape.StrokeDashOffset)">
<SplineDoubleKeyFrame KeyTime="00:00:00" Value="500"/>
<SplineDoubleKeyFrame KeyTime="00:00:08" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
Qualche suggerimento?
Soluzione
Ci sono almeno un paio di modi si potrebbe fare questo; che è meglio, probabilmente dipende dal rapporto del cerchio alla linea.
Se il cerchio è concettualmente parte della stessa forma come la linea, modificare il percorso per includere un ellisse (ARC) alla fine della linea. Ciò può essere ottenuto cambiando il percorso di dati, o aggiungendo un cerchio alla fine o aggiungendo un altro Figura alla PathGeometry.
Se il cerchio è concettualmente un componente separato, e si vuole solo luogo che componente accanto alla linea, si può semplicemente utilizzare uno StackPanel con il suo set di Orientamento alla orizzontale:
<StackPanel Orientation="Horizontal">
<Path /> <!-- The line -->
<Ellipse /> <!-- The circle -->
</StackPanel>
(Nota: in alcuni scenari, si può fare questo usando la proprietà EndLineCap che non funziona in questo caso, però, perché sembra che si desidera che il cerchio sia più grande di quanto lo spessore del tratto di linea tappi sono sempre gli stessi.. spessore della linea.)