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 ...
随机推荐
- windowsAPI之OpenProcessToken,AdjustTokenPrivileges 和LookupPrivilegeValue<转>
这三个函数主要用来提升进程的权限 1 OpenProcessToken()函数:获取进程的令牌句柄 OpenProcessToken的原型. BOOL WINAPI OpenProcessToken( ...
- springmvc启动时报错:找不到类ContextLoaderListener:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis ...
- 经典论文翻译导读之《Google File System》(转)
[译者预读] GFS这三个字母无需过多修饰,<Google File System>的论文也早有译版.但是这不妨碍我们加点批注.重温经典,并结合上篇Haystack的文章,将GFS.TFS ...
- c++复习:STL之理论基础
1 STL(标准模板库)理论基础 1.1基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之 ...
- 编译安装php5 解决编译安装的php加载不了gd
1. 编译安装php需要的模块: yum install libxml2-devel libxml2 curl curl-devel libpng-devel libpng openssl o ...
- 趣味编程:静夜思(Kotlin版)
import java.util.* fun verticalWriting(txt:String, offset:Int) = txt.mapIndexed { i, c -> Pair(i, ...
- python异常处理方法
异常是指程序中的例外.违例情况,比如序列的下标越界.打开不存在的文件.空引用异常等.通过捕获异常并进行正确处理,可以提高程序的健壮性.如果没有代码处理异常,Python解释器将输出相关异常信息并终止程 ...
- overload重载
方法的重载 /** * 重载 overload * @author Administrator *同一个类,同一个方法 *不同:参数列表不同(类型,个数,顺序) 只和 参数列表有关 * 跟 返回值 和 ...
- FMS Dev Guide学习笔记(远程共享对象)
一.开发交互式的媒体应用程序1.共享对象(Shared objects) ----远程共享对象 在你创建一个远程共享对象之前,创建一个NetConnection对象并且连接到服务器.一旦你创建了 ...
- Ros系列_学习一
刚入门ROS,不,没入门,还在门口,这是今天的总结: (一)创建一个工作空间 1.创建一个初始工作空间: mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src cat ...