如何在WinUI 3中实现BorderThickness的平滑过渡动画?
WinUI3实现BorderThickness平滑过渡动画
你之前的代码用了DiscreteObjectKeyFrame,这是离散关键帧,它会在指定时间点直接跳转到目标值,不会生成中间过渡值,所以动画是突变效果。下面是两种正确的实现方式:
方式一:直接使用ThicknessAnimation(最简便)
WinUI3支持ThicknessAnimation,写法和WPF几乎一致,会自动在起始值和目标值之间做线性插值,实现平滑过渡:
<Storyboard> <ThicknessAnimation Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="BorderThickness" From="0,0,0,0" To="5,5,5,5" Duration="0:0:3" /> </Storyboard>
方式二:使用带插值的关键帧(适合多阶段动画)
如果需要更复杂的多阶段动画,可以用LinearThicknessKeyFrame(线性过渡)或EasingThicknessKeyFrame(带缓动效果)替代离散关键帧:
<Storyboard Duration="0:0:3"> <ThicknessAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="BorderThickness"> <!-- 起始帧 --> <LinearThicknessKeyFrame KeyTime="0:0:0" Value="0,0,0,0" /> <!-- 结束帧,线性过渡到目标值 --> <LinearThicknessKeyFrame KeyTime="0:0:3" Value="5,5,5,5" /> </ThicknessAnimationUsingKeyFrames> </Storyboard>
如果需要缓动效果(比如先慢后快),把LinearThicknessKeyFrame换成EasingThicknessKeyFrame,并指定EasingFunction即可。
内容的提问来源于stack exchange,提问作者nullrefexc
相关产品推荐
相关产品推荐

