You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 19:12:54