WPF:ラインパス/ストロークの末尾にオブジェクト/シェイプを配置する方法は?

StackOverflow https://stackoverflow.com/questions/2368798

  •  24-09-2019
  •  | 
  •  

質問

私は特定のラインパスの末尾にオブジェクト(円)を置くことができる方法があるのならば、私はちょうど頼むWANNAます。

これと同様に、

--------------------------------------------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 361663 101678 117638)が変化する場合。

このような私のアニメーションルックス...

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

任意の提案ですか?

役に立ちましたか?

解決

あなたがこれを行うことができます方法の少なくともいくつかあります。これはおそらく最高のは、ラインへの円の関係に依存します。

円が概念的線と同じ形状の一部である場合、行の終わりに楕円(ARC)を含むようにパスを変更します。これは、いずれかの端部に円を追加することによって、またはPathGeometryをする別の図を追加することによって、経路データを変更することによって行うことができる。

円が概念的に独立した成分であり、あなただけの行に次のコンポーネントは、あなただけ水平にその向きセットでのStackPanelを使用することができること場所にしたい場合:

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

(注:一部のシナリオでは、あなたがEndLineCapプロパティを使用してこれを行うことができますが、円はストロークの太さよりも大きくなりたいように、それはこのケースでは動作しませんが見えるのでかかわらず、そのラインキャップは常に同じです。ラインとして厚さ)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top