专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > WPF

WPF动画制作简略的按钮动画

发布时间:2011-06-23 13:53:29 文章来源:www.iduyao.cn 采编人员:星星草
WPF动画制作简单的按钮动画

主界面的代码

<StackPanel  ButtonBase.Click="Grid_Click">
        <Button Content="逐渐变大缩小"/>
        <Button Content="鼠标移动特效" />
    </StackPanel>

cs :

//这事件不做过多的解释有基础的一看就会明白
 private void Grid_Click(object sender, RoutedEventArgs e)
        {
            object obj = e.OriginalSource;
            Button butn = null;
            if (obj is Button)
                butn = obj as Button;
            Type type = this.GetType();//获取当前实例
            Assembly assembly = type.Assembly;//获取在其中声明的类型
            //动态的实例化一个对象
            Window win = (Window)assembly.CreateInstance(type.Namespace + "." + butn.Content.ToString());
            win.Show();
            
        }
下面进行第一个动画:
xaml界面
  <Grid>
        <Button Content="点击逐渐增长" Height="45" HorizontalAlignment="Left" Margin="29,37,0,0" Name="btnGrow1" VerticalAlignment="Top" Width="213" />
        <Button Content="点击逐渐归位" Height="23" HorizontalAlignment="Left" Margin="86,88,0,0" Name="btnBack" VerticalAlignment="Top" Width="90" />
        <Button Content="点击增长" Height="46" HorizontalAlignment="Left" Margin="98,161,0,0" Name="btnGrow" VerticalAlignment="Top" Width="78" />
    </Grid>
cs:
public 逐渐变大缩小()
        {
            InitializeComponent();
            //给button注册点击事件
            btnGrow1.Click += new RoutedEventHandler(btnGrow1_Click);
            btnBack.Click += new RoutedEventHandler(btnBack_Click);
            btnGrow.Click += new RoutedEventHandler(btnGrow_Click);
        }
        //点击增长
        void btnGrow_Click(object sender, RoutedEventArgs e)
        {
            DoubleAnimation widthAnimation = new DoubleAnimation() { By=50,Duration=TimeSpan.FromSeconds(0.2) };
            btnGrow.BeginAnimation(Button.WidthProperty, widthAnimation);
        }
        //还原动画
        void btnBack_Click(object sender, RoutedEventArgs e)
        {
            DoubleAnimation widthAmination = new DoubleAnimation();
            widthAmination.Duration = TimeSpan.FromSeconds(1);
            DoubleAnimation heightAmimation = new DoubleAnimation();
            heightAmimation.Duration = TimeSpan.FromSeconds(1);
            btnGrow1.BeginAnimation(Button.WidthProperty, widthAmination);
            btnGrow1.BeginAnimation(Button.HeightProperty, heightAmimation);
        }
        //逐渐增长事件
        void btnGrow1_Click(object sender, RoutedEventArgs e)
        {
            DoubleAnimation widthAnimation = new DoubleAnimation()
            {
                To = this.Width - 30,
                Duration = TimeSpan.FromSeconds(1)
            };
            DoubleAnimation heightAnimation = new DoubleAnimation() 
            {
             To=(this.Height-40)/3,
             Duration=TimeSpan.FromSeconds(1)
            };
            btnGrow1.BeginAnimation(Button.WidthProperty, widthAnimation);
            btnGrow1.BeginAnimation(Button.HeightProperty, heightAnimation);
        }
好了现在的一个简单点击放大缩小的动画就做好了
小结:1,本例中在菜单窗体中用到了用到了一个 ButtonBase.Click特别说明一下这个事件很好用如果一个界面上的按钮很多
每个事件都需要弹出一个窗体用这个最好用,节省代码,
2,在WPF中要实现动画就需要DoubleAnimation这个类,按照自己的想法从初始状态From定义到结束To状态在多长事件内完成Duration
最后需要一个控件来触发动画例如:
   btnGrow1.BeginAnimation(Button.WidthProperty, widthAnimation);
这段代码的意思就是
btnGrow1控件点击是触发widthAnimation这个动画,影响的对象就是这个控件的width
好了就写到这里,以后还会有,wpf,很有意思,相比起winform来他的界面更加灵活,代码编写也更加灵活,
界面的色彩也很好定义,另外动画也可以下载axml中,但是本人不喜欢在界面设计窗台上写这些,在后台写的话跟能看的清楚。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: