2010-03-03 6 views
0

Я просто хочу спросить, есть ли способ разместить объект (круг) в конце определенного пути линии.WPF: Как поместить объект/фигуру в конец линейного пути/штриха?

Подобно этому:

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

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

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

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

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

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

+0

Обратите внимание, что «Данные» в Path.Data содержат только «точки данных». Как можно создать круг/эллипс вместе с дорожкой? – abramlimpin

+0

Path.Data - это геометрия. Установите его в PathGeometry, состоящий из LineSegment и ArcSegment, или CombinedGeometry или GeometryGroup, содержащих LineGeometry и EllipseGeometry. – itowlson

 Смежные вопросы

  • Нет связанных вопросов^_^