当前位置:网站首页 / WPF / 正文

AYUI 4.X 微动画库模块,已提供常用代码

时间:2016年06月27日 | 作者 : aaronyang | 分类 : WPF | 浏览: 2220次 | 评论 0

这是我抽象出来的一个类

/**----------------------------------------------- 
 * * ====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang======使用代码请注意侵权========= 
 * 
 * 作者:ay * 联系QQ:875556003 * 时间2016-6-24 15:27:39 
 * -----------------------------------------*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;

namespace Ay.Framework.WPF.AyAnimate
{
    /// <summary>
    /// 2016-6-27 version:1.0
    /// </summary>
    public abstract class AyAnimateBase
    {
        public AyAnimateBase(UIElement _element)
        {
            this.Element = _element;
        }

        public AyAnimateBase(UIElement _element, Action _completed)
        {
            this.Completed = _completed;
            this.Element = _element;
        }
        public AyAnimateBase(string _name, UIElement _element)
        {
            this.AnimateName = _name;
            this.Element = _element;
        }
        public AyAnimateBase(string _name, UIElement _element, Action _completed)
        {
            this.AnimateName = _name;
            this.Completed = _completed;
            this.Element = _element;
        }
        public Action Completed { get; set; }

        private Window win;

        internal Window Win
        {
            get
            {
                if (win != null)
                {
                    return win;
                }
                else
                {
                    win = Window.GetWindow(Element);
                    return win;
                }
            }
        }


        private UIElement element;

        public UIElement Element
        {
            get { return element; }
            set { element = value; }
        }

        private string animateName;

        public string AnimateName
        {
            get { return animateName; }
            set { animateName = value; }
        }

        public abstract void Animate();

        public virtual void Stop(){}
        
         public virtual void Destroy() { }
    }


}

动画制作要点:

新建类,继承它

例如做个弹跳,我需要改变TranslateTransform,更快速使用动画,我需要注册类型的名字。我需要获得控件所在的窗体,才能注册,

下面是我要考虑的,已经考虑好的


前台可以不考虑是否有RenderTransform,如果有,也可以没有TranslateTransform,如果有TranslateTransform,也可以没有name,如果有name,就用他自己的,不然我注册个name,动画完成清空帧,storyboard,还有注册的资源 


以上所有都是为了让用户更快的使用和开发,排除所有可能存在的问题和写法。


新建一个Flash的动画微动画库拓展

blob.png

以上是基本格式

常用操作:获得用户所在的窗体        var win = Window.GetWindow(Element);  不过已经在抽象类提取了,直接使用Win即可。

Win.UnregisterName("")

Win.RegisterName("",类型的实例);

常用参考代码:

DoubleAnimationUsingKeyFrames dau = new DoubleAnimationUsingKeyFrames();

var k2 = new EasingDoubleKeyFrame(值, TimeSpan.FromMilliseconds(0), new PowerEase { EasingMode = EasingMode.EaseOut });

Storyboard.SetTargetName(dau, translationName);

Storyboard.SetTargetProperty(dau, new PropertyPath(TranslateTransform.YProperty));

dau.KeyFrames.Add(k2);

story.Children.Add(dau);



var storyboardName = "aystory" + story.GetHashCode();

Win.Resources.Add(storyboardName, story);

Win.Resources.Remove(storyboardName);

story.Completed +=

                     (sndr, evtArgs) =>

                     {

//取消注册


//释放资源

                          dau.KeyFrames.Clear();

                         dau = null;

                         story = null;

                         if (Completed != null)

                         {

                             Completed();

                         }

 };

 story.Begin();


下面是我写的一个通用的Bounce


xaml前台可以不考虑是否有RenderTransform,如果有,也可以没有TranslateTransform,如果有TranslateTransform,也可以没有name,如果有name,就用他自己的,不然我注册个name,动画完成清空帧,storyboard,还有注册的资源 

用户用法非常简单:

  msg.Text = "动画表演中";
            var bn = new AyAniBounce(textBlock, () =>
             {
                 msg.Text = "动画完成";
             });
            bn.Animate();

            var bn2 = new AyAniBounce(rec2);
            bn2.Animate();

效果:

9.gif


====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========

================================AYUI 4.X=======================




2016-6-27 17:15:09更新

88.gif



推荐您阅读更多有关于“WPF4.5AYUI,”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

合肥科大智能常年招聘C# .NET CORE,vue前端,JAVA开发,有想换工作的私聊我AY唯一QQ:875556003和AY交流

抖音号:wpfui 工作是wpf,不接活,目前主要折腾maui

AYUI8社区版Github地址:前往获取

杨洋(AaronYang简称AY,安徽六安人)目前是个人,还没公司AY唯一QQ:875556003和AY交流

高中学历,2010年开始web开发,2015年1月17日开始,兴趣学习研究WPF

声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费.AY主要靠卖技术服务挣钱

不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

vs2015 企业版密钥HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

vs2017 企业版密钥NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

标签列表