Pergunta

Eu só quero perguntar se há uma maneira de colocar um objeto (círculo) no final de um caminho de linha específico.

Semelhante a isso:

--------------------------------------------O 
Start                                      End

No momento, tenho o seguinte código para traçar a linha:

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

onde os dados do meu caminho (por exemplo, M532.668 L523.695 361.663 101.678 117.638) varia.

Minha animação se parece com isso ...

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

Alguma sugestão?

Foi útil?

Solução

Existem pelo menos algumas maneiras de fazer isso; O que é melhor provavelmente depende do relacionamento do círculo com a linha.

Se o círculo fizer parte conceitualmente da mesma forma que a linha, altere seu caminho para incluir uma elipse (arco) no final da linha. Isso pode ser feito alterando os dados do caminho, adicionando um círculo ao final ou adicionando outra figura à PathGeometria.

Se o círculo for conceitualmente um componente separado, e você só quiser colocar esse componente ao lado da linha, basta usar um Stackpanel com sua orientação definida como horizontal:

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

(Nota: em alguns cenários, você pode fazer isso usando a propriedade EndLinecap. Isso não funcionará neste caso, porque parece que você deseja que o círculo seja maior que a espessura do golpe. As tampas da linha são sempre a mesma espessura que a linha.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top