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 ...
随机推荐
- SRM-供应商关系管理-组织模式
https://wiki.scn.sap.com/wiki/display/SRM/PPOMA_BBP 供应商关系管理 ... 组织模式 PPOMA_BBP 跳到元数据结束 由Ivy Li ...
- Mongo 应用查询
官网操作手册,基本就够用 https://docs.mongodb.com/manual/ 下面是个分组查询的例子,项目中用到然后查了个例子,自己理解了下,觉得很好很强大. https://blog. ...
- Raft算法和Gossip协议
简单介绍下集群数据同步,集群监控用到的两种常见算法. Raft算法 raft 集群中的每个节点都可以根据集群运行的情况在三种状态间切换:follower, candidate 与 leader.lea ...
- Nginx性能优化
一.编译安装过程优化 1.减小Nginx编译后的文件大小 在编译Nginx时,默认以debug模式进行,而在debug模式下会插入很多跟踪和ASSERT之类的信息,编译完成后,一个Nginx要有好几兆 ...
- select min from 连接
预先准备 create table p( name ) ); insert into p values('黄伟福'); insert into p values('赵洪'); insert into ...
- oracle函数大全-字符处理函
字符函数——返回字符值 这些函数全都接收的是字符族类型的参数(CHR 除外)并且返回字符值.除了特别说明的之外,这些函数大部分返回VARCHAR2类型的数值.字符函数的返回类型所受的限制和基本数据库类 ...
- HttpURLConnection 添加代理
//创建代理服务器 Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("www.proxyaddress.com& ...
- linux目录结构详解(以suse linux 10为例)
一.文件系统结构 位于Linux系统的最顶端即根目录是/.Linux的文件系统的入口就是/,所有的目录.文件.设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者. 它之下的子目录有: ...
- 14.连接池.md
目录 连接池定义 常用开源连接池: DBCP: C3P0 连接池定义 使用统一的规范:javax.sql.DataSource实现统一编程 常用开源连接池: DBCP:tomcat C3P0:hibe ...
- python第三步骤(pygame)
1:先安装homebrew(类似于yum /apt-get为什么需要它呢,因为pip安装的时候需要很多的包的依赖,sdl什么的), 2:pip 安装pygame 我讨厌的环境变量问题 然后 通过的是 ...