我有一个由Rectangle
定义的Path
和RectangleGeometry
:
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Rectangle Grid.Row="0" Stroke="Red" Width="{Binding RctWidth}"/>
<Path Grid.Row="1" Stroke="Red">
<Path.Data>
<RectangleGeometry Rect="0,0,50,10"/>
</Path.Data>
<Path.Triggers>
<EventTrigger RoutedEvent="Path.Loaded">
<BeginStoryboard>
<Storyboard TargetProperty="StrokeThickness">
<DoubleAnimation RepeatBehavior="Forever" From="1" To="3" Duration="0:0:0.5"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Path.Triggers>
</Path>
</Grid>
矩形根据绑定动态更改其宽度。
矩形Path
在其StrokeThickness
上应用了动画。
我希望矩形Path
与该矩形的大小完全匹配,但是这样的方式使得笔画粗细动画不会影响它(较粗的笔画应该使Path
实际上比Rectangle
- 这是预期的行为。)
我该怎么做?
请注意,我无法使用Stretch="Fill"
上的Path
属性。在这种情况下,笔画粗细仅在Path
s范围内增长,但我想保持笔画在内外方向上的默认行为。
此外,我无法更改Rectangle
的宽度所绑定的视图模型。这是一个我不允许修改的外部组件。
我实际上可以摆脱Rectangle
。对我来说重要的是Path
及其动态变化的宽度。
答案 0 :(得分:1)
如评论所述,中风厚度仅向内部增长的影响可以通过负边距抵消。
对于将厚度从1更改为3的动画,边距需要从0更改为-1(补偿厚度变化的一半):
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="StrokeThickness" RepeatBehavior="Forever" From="1" To="3" Duration="0:0:0.5"/>
<ThicknessAnimation Storyboard.TargetProperty="Margin" RepeatBehavior="Forever" From="0" To="-1" Duration="0:0:0.5"/>
</Storyboard>
</BeginStoryboard>
有了这个,您可以将解决方案与Stretch="Fill"
一起使用,无论它看起来像什么。