C# WPF 利用DoubleAnimation类实现任意元素的淡入淡出(自定义距离、方向、时长)

这篇博客介绍了如何在C# WPF环境中利用DoubleAnimation类创建自定义淡入淡出动画,包括设置动画的距离、方向和时长。通过新建类并调用特定函数,开发者可以方便地在自己的应用程序中实现这一效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行环境

MS VS 2019
.NET Framework 4.5
C# WPF应用

展示效果

对WPF只是略知一二,如果有用的话,希望为需要的人提供有限的帮助
可以实现不同方向的淡入淡出、自定义的持续时间和距离
只要像提示的这样调用函数就可以调用这个动画了
函数提示
演示

使用方法

新建类

新建类
新建类
文件里面写上下面的代码

using System;
using System.Windows.Controls;
using System.Windows.Media.Animation;
using System.Windows.Media;
using System.Windows;

namespace WpfApp1
{
   
    class Class1
    {
   
        /// <summary>
        /// 淡入动画 (控件名, 0:上方;1:右方;2:下方;3:左方, 淡入的距离,持续时间)
        /// </summary>
        /// <param name="element">控件名</param>
        /// <param name="direction">0:上方;1:右方;2:下方;3:左方</param>
        /// <param name="distance">淡入的距离</param>
        /// <param name="duration">持续时间</param>
        public void Appear(FrameworkElement element, int direction = 0, int distance = 20, double duration = .3)
        {
   
            //将所选控件的Visibility属性改为Visible,这里要首先执行否则动画看不到
            ObjectAnimationUsingKeyFrames VisbilityAnimation = new ObjectAnimationUsingKeyFrames();
            DiscreteObjectKeyFrame kf = new DiscreteObjectKeyFrame(Visibility.Visible, new TimeSpan(0, 0, 0));
            VisbilityAnimation.KeyFrames.Add(kf);
            element.BeginAnimation(Border.VisibilityProperty, VisbilityAnimation);

            //创建新的缩放动画
            TranslateTransform TT = new TranslateTransform();
            element.RenderTransform = TT;
            //创建缩放动画函数,可以自己修改
            EasingFunctionBase easeFunction = new PowerEase() {
    EasingMode = EasingMode.EaseInOut, Power = 2 };

            //判断动画方向
            if (direction == 0)
            {
   
                DoubleAnimation Animation = new DoubleAnimation(-distance, 0, new Duration(TimeSpan.FromSeconds(duration)));
                Animation.EasingFunction = easeFunction;
      
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值