WPF: Как поместить объект / фигуру в конец пути / обводки? - PullRequest
0 голосов
/ 03 марта 2010

Я просто хочу спросить, есть ли способ, которым я мог бы поместить объект (круг) в конец пути конкретной линии.

Аналогично этому:

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

Есть предложения?

1 Ответ

4 голосов
/ 03 марта 2010

Есть по крайней мере несколько способов сделать это; что лучше всего, вероятно, зависит от отношения круга к линии.

Если круг концептуально является частью той же формы, что и линия, измените путь, чтобы включить эллипс (дугу) в конце линии. Это можно сделать, изменив путь к данным, либо добавив кружок в конец, либо добавив еще один рисунок в PathGeometry.

Если круг концептуально является отдельным компонентом, и вы просто хотите поместить этот компонент рядом с линией, вы можете просто использовать StackPanel с его ориентацией, установленной на Горизонтально:

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

(Примечание: в некоторых сценариях вы можете сделать это, используя свойство EndLineCap. Это не сработает в этом случае, потому что похоже, что вы хотите, чтобы круг был больше толщины обводки. Заглушки линий всегда одинаковы толщина как линия.)

...