我只想问一下我是否可以在特定的线路末端放置一个物体(圆圈)。
与此类似:
--------------------------------------------O
Start End
现在,我有以下代码来跟踪该行:
<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>
我路径的数据(例如M532,668 L523,695 361,663 101,678 117,638)有所不同。
我的动画看起来像这样......
<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>
有什么建议吗?
答案 0 :(得分:4)
至少有几种方法可以做到这一点;最好的可能取决于圆与线的关系。
如果圆在概念上与线的形状相同,请更改路径以在线的末尾包含椭圆(弧)。这可以通过更改路径数据来完成,方法是在末尾添加一个圆圈,或者将另一个图添加到PathGeometry中。
如果圆在概念上是一个单独的组件,并且您只想将该组件放在该行旁边,则可以使用StackPanel,其Orientation设置为Horizontal:
<StackPanel Orientation="Horizontal">
<Path /> <!-- The line -->
<Ellipse /> <!-- The circle -->
</StackPanel>
(注意:在某些情况下,您可以使用EndLineCap属性执行此操作。但在这种情况下这不起作用,因为看起来您希望圆圈大于笔触粗细。线帽总是相同的厚度为线。)