c#控件的动画显示效果
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#控件的动画显示效果的更多相关文章
- IOS开发-UI学习-使用UIImageView控件制作动画
先添加40张tomcat的图片到资源列表中:名称为cat_eat0000.jpg到cat_eat0039.jpg. 1.定义所需控件 // 定义按钮,图片控件.可变数组对象 UIButton *act ...
- WPF编程,通过KeyFrame 类型制作控件线性动画的一种方法。
原文:WPF编程,通过KeyFrame 类型制作控件线性动画的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/articl ...
- 3.WP8.1开发_为控件增加动画
示例: 把一个按钮的宽度从100变到500 根据WPF的经验,会把代码写成如下: <Grid> <Button x:Name="btn" Content=&quo ...
- Android5.0新特性之——控件移动动画(初级)
最近开发,UI大牛们设计了好多很炫酷吊炸天的动画,不由得重新学习了一下5.0的ObjectAnimator动画. ObjectAnimator动画的原理,通过反射控件的setXXX方法,改变控件的实际 ...
- Unity NGUI 描点控件的位移动画
要让一个描点的控件动画移动到一个Position,能够用TweenPosition.可是这个仅仅能用在Position是固定的情况下.并且不能依据分辨率适配来进行移动. 以NGUI自带的 ...
- 仿饿了么增加购物车旋转控件 - 自带闪转腾挪动画 的button
本篇文章已授权微信公众号 guolin_blog (郭霖)独家公布 转载请标明出处: http://blog.csdn.net/zxt0601/article/details/54235736 本文出 ...
- .Net语言 APP开发平台——Smobiler学习日志:Poplist控件的正确打开方式以及如何快速实现
最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 样式一 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的&qu ...
- Cesium应用篇:3控件(3)SelectionIndicator& InfoBox
假设这样一个场景,用户在Cesium球上加载了一个GeoJson文件(DataSource),里面是全美国所有州的Geometry信息(Entity),叠加到球面后,你自然会有一种冲动,点击某一个州, ...
- jQuery Datepicker日期控件
datepicker可以为bootstrap添加一个事件选择控件,适用于任何需要调用的场合,支持多种事件格式输出(比如:dd, d, mm, m, yyyy, yy等),是制作网页不可缺失的插件. R ...
随机推荐
- 关于webstorm链接不上SVN的解决办法
使用WEBSTROM上传代码是很方便的,但是通过它调用SVN时,经常会出现问题,我在使用它调用TortoiseSVN时就出现了一些问题,好在问题已经解决,现在把解决办法分享给大家: 首先,看看,安装时 ...
- day17-函数装饰器
一.什么是装饰器 装饰器可以让其他函数在不需要做任何代码改变的前提下,增加额外的功能,装饰器的返回值也是一个函数对象.在 Python 中,函数是第一类对象,也就是说,函数可以做为参数传递给另外一个函 ...
- redis异常和注意点
目录: 1. 修改配置不起作用 2.Connection reset by peer: socket write error 3. redis-cli 查看中文乱码 1. 修改配置不起效果 我们修改了 ...
- WDA-2-事件执行先后
WebDynpro 中事件执行顺序 一:WebDynpro 启动时的 hokeMethod 执行顺序 (这里观察一个 view)从上至下,依次进行 如果这个 view 上还有一个 button(能触发 ...
- mobile-net v2 学习记录。我是菜鸡!
声明:只是自己写博客总结下,不保证正确性,我的理解很可能是错的.. 首先,mobile net V1的主要特点是: 1.深度可分离卷积.用depth-wise convolution来分层过滤特征,再 ...
- vue.js 中双向绑定的实现---初级
1. 1 我们看到的变量,其实都不是独立的,它们都是windows对象上的属性 <!DOCTYPE html> <html lang="en"> <h ...
- python语言中的数据类型
一.内存管理 1.python解释器的垃圾回收机制 垃圾:当一个值上没有人绑定任何变量名时(当引用计数为0),该值就是一个垃圾. python解释器运行时会检测值的引用计数,当引用计数=0该值会被清除 ...
- C语言复习:文件操作
文件操作专题 C语言文件读写概念 文件分类 按文件的逻辑结构: 记录文件:由具有一定结构的记录组成(定长和不定长) 流式文件:由一个个字符(字节)数据顺序组成 按存储介质: 普通文件:存储介质文件(磁 ...
- linux初始化
[Linux 系统启动过程] Linux的启动其实和windows的启动过程很类似,不过windows我们是无法看到启动信息的,而linux启动时我们会看到许多启动信息,例如某个服务是否启动. Lin ...
- python桌面端开发手记(序列化、压缩包、加密、图形界面GUI)
0x00 前段时间接到一个小项目是给某行业内部开发离线桌面端,业务流实现上总体分信息录入.加密导出.因为是win桌面端,所以老板说依托Access用VBA做,我据理力争了一下.之前就是用Acces ...