1.  缘由:

项目中任务完成有个提示,需要以动画效果展示,其效果当如下图:

此为老项目为Delphi所写,改用c#实现,此效果做些设计。本也不难,小技而已,但为易于扩展,写了个静态类实现。

2. Animation动画类

直上代码如下:

    public static class Animation
{
private static readonly int MoveStep = ;
private static Timer tmrAnim = null;
private static Control control = null;
private static AnchorStyles direction = AnchorStyles.None;
private static Size destSize; private static void InitTimer()
{
if (tmrAnim == null)
{
tmrAnim = new Timer();
tmrAnim.Interval = ;
tmrAnim.Tick += new System.EventHandler(tmrAnim_Tick);
}
} private static void tmrAnim_Tick(object sender, System.EventArgs e)
{
int newValue = ;
int offSet = ;
switch (direction)
{
case AnchorStyles.Left:
case AnchorStyles.Right:
newValue = control.Width + MoveStep;
if (newValue > destSize.Width)
{
tmrAnim.Stop();
newValue = destSize.Width;
} offSet = newValue - control.Width;
control.Width += offSet;
if (direction == AnchorStyles.Left)
control.Left -= offSet;
break;
case AnchorStyles.Top:
case AnchorStyles.Bottom:
newValue = control.Height + MoveStep;
if (newValue > destSize.Height)
{
tmrAnim.Stop();
newValue = destSize.Height;
} offSet = newValue - control.Height;
control.Height += offSet;
if (direction == AnchorStyles.Top)
control.Top -= offSet;
break;
}
} public static void ShowControl(Control control, bool visible, AnchorStyles direction = AnchorStyles.None)
{
if (direction == AnchorStyles.None)
{
control.Visible = visible;
return;
} if (!visible)
{
if (tmrAnim != null)
tmrAnim.Stop();
control.Hide();
}
else
{
InitTimer(); if (Animation.control != control && destSize.IsEmpty)
{
destSize = new Size(control.Width, control.Height);
}
Animation.control = control;
Animation.direction = direction;
switch (direction)
{
case AnchorStyles.Left:
case AnchorStyles.Right:
if (direction == AnchorStyles.Left)
control.Left += control.Width;
control.Width = ;
break;
case AnchorStyles.Top:
case AnchorStyles.Bottom:
if (direction == AnchorStyles.Top)
control.Top += control.Height;
control.Height = ;
break;
}
control.Show();
tmrAnim.Start();
}
}
}

非常短小,其实现控件由四面出现效果,如下图:

3. 最终实现效果图:

c#控件的动画显示效果的更多相关文章

  1. IOS开发-UI学习-使用UIImageView控件制作动画

    先添加40张tomcat的图片到资源列表中:名称为cat_eat0000.jpg到cat_eat0039.jpg. 1.定义所需控件 // 定义按钮,图片控件.可变数组对象 UIButton *act ...

  2. WPF编程,通过KeyFrame 类型制作控件线性动画的一种方法。

    原文:WPF编程,通过KeyFrame 类型制作控件线性动画的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/articl ...

  3. 3.WP8.1开发_为控件增加动画

    示例: 把一个按钮的宽度从100变到500 根据WPF的经验,会把代码写成如下: <Grid> <Button x:Name="btn" Content=&quo ...

  4. Android5.0新特性之——控件移动动画(初级)

    最近开发,UI大牛们设计了好多很炫酷吊炸天的动画,不由得重新学习了一下5.0的ObjectAnimator动画. ObjectAnimator动画的原理,通过反射控件的setXXX方法,改变控件的实际 ...

  5. Unity NGUI 描点控件的位移动画

           要让一个描点的控件动画移动到一个Position,能够用TweenPosition.可是这个仅仅能用在Position是固定的情况下.并且不能依据分辨率适配来进行移动. 以NGUI自带的 ...

  6. 仿饿了么增加购物车旋转控件 - 自带闪转腾挪动画 的button

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家公布 转载请标明出处: http://blog.csdn.net/zxt0601/article/details/54235736 本文出 ...

  7. .Net语言 APP开发平台——Smobiler学习日志:Poplist控件的正确打开方式以及如何快速实现

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 样式一 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的&qu ...

  8. Cesium应用篇:3控件(3)SelectionIndicator& InfoBox

    假设这样一个场景,用户在Cesium球上加载了一个GeoJson文件(DataSource),里面是全美国所有州的Geometry信息(Entity),叠加到球面后,你自然会有一种冲动,点击某一个州, ...

  9. jQuery Datepicker日期控件

    datepicker可以为bootstrap添加一个事件选择控件,适用于任何需要调用的场合,支持多种事件格式输出(比如:dd, d, mm, m, yyyy, yy等),是制作网页不可缺失的插件. R ...

随机推荐

  1. windowsAPI之OpenProcessToken,AdjustTokenPrivileges 和LookupPrivilegeValue<转>

    这三个函数主要用来提升进程的权限 1 OpenProcessToken()函数:获取进程的令牌句柄 OpenProcessToken的原型. BOOL WINAPI OpenProcessToken( ...

  2. springmvc启动时报错:找不到类ContextLoaderListener:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

    严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis ...

  3. 经典论文翻译导读之《Google File System》(转)

    [译者预读] GFS这三个字母无需过多修饰,<Google File System>的论文也早有译版.但是这不妨碍我们加点批注.重温经典,并结合上篇Haystack的文章,将GFS.TFS ...

  4. c++复习:STL之理论基础

    1 STL(标准模板库)理论基础 1.1基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之 ...

  5. 编译安装php5 解决编译安装的php加载不了gd

    1. 编译安装php需要的模块: yum install libxml2-devel libxml2  curl curl-devel  libpng-devel  libpng  openssl o ...

  6. 趣味编程:静夜思(Kotlin版)

    import java.util.* fun verticalWriting(txt:String, offset:Int) = txt.mapIndexed { i, c -> Pair(i, ...

  7. python异常处理方法

    异常是指程序中的例外.违例情况,比如序列的下标越界.打开不存在的文件.空引用异常等.通过捕获异常并进行正确处理,可以提高程序的健壮性.如果没有代码处理异常,Python解释器将输出相关异常信息并终止程 ...

  8. overload重载

    方法的重载 /** * 重载 overload * @author Administrator *同一个类,同一个方法 *不同:参数列表不同(类型,个数,顺序) 只和 参数列表有关 * 跟 返回值 和 ...

  9. FMS Dev Guide学习笔记(远程共享对象)

    一.开发交互式的媒体应用程序1.共享对象(Shared objects)    ----远程共享对象 在你创建一个远程共享对象之前,创建一个NetConnection对象并且连接到服务器.一旦你创建了 ...

  10. Ros系列_学习一

    刚入门ROS,不,没入门,还在门口,这是今天的总结: (一)创建一个工作空间 1.创建一个初始工作空间: mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src cat ...