• 一个实用的Metro滚屏效果示例


    以前在Windows Phone7下开发时,对全景控件Panorama印象深刻,在Metro app中没有对应的控件,于是就尝试借鉴一下这种效果。
    如果不熟悉Panorama,可以参见以下两张图片。

    其中,我想完成的效果限于两点:
    1.将页面中心区域移动到鼠标点击位置所在的控件或内容。
    2.当前页面中能够看到右侧部分屏,增加体验效果。

    示例内容:
    假定一个登录/注册共用界面,左侧为登录,右侧为注册,默认居中显示登录,如果是新用户,则可以滚屏到注册,完成后切换回来继续登录。
    为了示范效果,登录和注册的功能均省略(完整的功能还要考虑输入验证、业务逻辑云云),仅以界面布局为主。

    最主要的动画效果代码:

    private void TransitionAnimation()
    {
        DoubleAnimation daRegister = new DoubleAnimation(); 
        daRegister.From = -gMain.Width / 2.0; ;
        daRegister.To = 0.0;
        daRegister.Duration = new Duration(TimeSpan.FromMilliseconds(300));
        daRegister.AutoReverse = false;
        Storyboard.SetTarget(daRegister, gMain);
        Storyboard.SetTargetProperty(daRegister, "(Canvas.Left)");
        sbRegister = new Storyboard();
        sbRegister.Children.Add(daRegister);
    
        DoubleAnimation daLogin = new DoubleAnimation();
        daLogin.From = 0.0;
        daLogin.To = -gMain.Width / 2.0;
        daLogin.Duration = new Duration(TimeSpan.FromMilliseconds(300));
        daLogin.AutoReverse = false;
        Storyboard.SetTarget(daLogin, gMain);
        Storyboard.SetTargetProperty(daLogin, "(Canvas.Left)");
        sbLogin = new Storyboard();
        sbLogin.Children.Add(daLogin);
    }

    从代码中可以明白,项目中创建了两个用户控件daLogin和daRegister,有固定宽度,借助动画使得主页面MainPage中的Canvas来回移动达到目标,
    以下是执行效果的图片。

    其实代码还算简单,如果想更丰富一下,可以通过鼠标和触点事件完成手势滚屏,也可以增加多个图片控件完成一组宣传内容的滚动,类似Metro版的EverNote,原理相同可以自行发挥。

    项目源文件:下载

  • 相关阅读:
    ACwing98 分形之城 分形图
    ACwing96 奇怪的汉诺塔 递推
    ACwing95 费解的开关 bfs
    ACwing94 递归实现排列型枚举 dfs
    ACwing93 递归实现组合型枚举 dfs
    递归型枚举总结
    洛谷P2286 宠物收养场 splay
    python之路——初识数据库
    python之路——协程
    python之路——线程
  • 原文地址:https://www.cnblogs.com/BeanHsiang/p/2567412.html
Copyright © 2020-2023  润新知