0

我只是想问是否有一种方法可以将对象(圆圈)放在特定线路路径的末尾。

与此类似:

--------------------------------------------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>

有什么建议么?

4

1 回答 1

4

至少有几种方法可以做到这一点;哪个最好可能取决于圆与线的关系。

如果圆在概念上与线的形状相同,请更改路径以在线的末端包含一个椭圆(圆弧)。这可以通过更改路径数据来完成,可以通过在末尾添加一个圆圈或通过将另一个图形添加到 PathGeometry。

如果圆在概念上是一个单独的组件,并且您只想将该组件放置在线旁边,则可以使用 StackPanel 并将其 Orientation 设置为 Horizo​​ntal:

<StackPanel Orientation="Horizontal">
  <Path />  <!-- The line -->
  <Ellipse />  <!-- The circle -->
</StackPanel>

(注意:在某些情况下,您可以使用 EndLineCap 属性执行此操作。但在这种情况下这不起作用,因为看起来您希望圆圈大于笔划粗细。线帽始终与线。)

于 2010-03-03T04:49:41.590 回答