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 に別の Figure を追加して、パス データを変更することで実行できます。

円が概念的に独立したコンポーネントであり、そのコンポーネントを線の隣に配置したいだけの場合は、Orientation を Horizo​​ntal に設定して StackPanel を使用できます。

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

(注: 一部のシナリオでは、EndLineCap プロパティを使用してこれを行うことができます。ただし、円をストロークの太さよりも大きくしたいように見えるため、この場合は機能しません。ライン キャップは常に、ライン。)

于 2010-03-03T04:49:41.590 に答える