一、定义缓动动画类

public class AnimationHelper
{
Timer animationTimer = new Timer();
double velocity = 0.0;
Point location = Point.Empty;
double force = 0.01; //0.69;
double drag = 0.8;
private Control control;
//private AxShockwaveFlash control;
private int targetPos=0; public AnimationHelper(int interval=5)
{
animationTimer.Interval = interval;
animationTimer.Tick += delegate
{
if (control == null) return;
int currentPos = control.Location.X;
if (Math.Abs(currentPos - targetPos) <= 5)
{
control.Location = new Point(targetPos, control.Location.Y);
animationTimer.Stop();
}
int dx = targetPos - currentPos;
velocity += force * dx;
velocity *= drag;
if (Math.Abs(velocity) < 5)
{
if (velocity > 0)
velocity = 5;
else
velocity = -5;
}
control.Location = new Point(currentPos + (int)velocity, control.Location.Y);
};
animationTimer.Start();
} public void MoveXEx(Control control, int targetPos, Action completeWith = null)
{
this.control = control;
this.targetPos = targetPos;
velocity = 0;
animationTimer.Start();
}
}

二、’使用教程:

        AnimationHelper animationHelper = new AnimationHelper();
AnimationHelper animationHelper1 = new AnimationHelper();
private int pos = 0;
private int pos1 = 0;
private int dx = 200;
private void button1_Click(object sender, EventArgs e)
{
animationHelper.MoveXEx(pictureBox2, pos += dx);
animationHelper1.MoveXEx(pictureBox1, pos1 += dx); } private void button2_Click(object sender, EventArgs e)
{
animationHelper.MoveXEx(pictureBox2, pos -= dx);
animationHelper1.MoveXEx(pictureBox1, pos1 -= dx);
}

三、效果:

c# Winform 缓动动画的更多相关文章

  1. jQuery-1.9.1源码分析系列(十五) 动画处理——缓动动画核心Tween

    在jQuery内部函数Animation中调用到了createTweens()来创建缓动动画组,创建完成后的结果为: 可以看到上面的缓动动画组有四个原子动画组成.每一个原子动画的信息都包含在里面了. ...

  2. 背水一战 Windows 10 (15) - 动画: 缓动动画

    [源码下载] 背水一战 Windows 10 (15) - 动画: 缓动动画 作者:webabcd 介绍背水一战 Windows 10 之 动画 缓动动画 - easing 示例演示缓动(easing ...

  3. WPF界面设计技巧(7)—模拟电梯升降的缓动动画

    原文:WPF界面设计技巧(7)-模拟电梯升降的缓动动画 如同Flash一样,WPF的亮点之一也在于其擅于表现平滑的动画效果,但以移动动画来说,仅凭简单的起始位置.目标位置,所产生的动画仍会非常生硬,这 ...

  4. Windows Phone开发(42):缓动动画

    原文:Windows Phone开发(42):缓动动画 前面在讨论关键帧动画的时候,我有意把几个带缓动动画的关键帧动画忽略掉,如EasingColorKeyFrame.EasingDoubleKeyF ...

  5. 重新想象 Windows 8 Store Apps (19) - 动画: 线性动画, 关键帧动画, 缓动动画

    原文:重新想象 Windows 8 Store Apps (19) - 动画: 线性动画, 关键帧动画, 缓动动画 [源码下载] 重新想象 Windows 8 Store Apps (19) - 动画 ...

  6. JS基础知识——缓动动画

    基于距离的缓动动画 原理:设定起始位置  start 和终止位置 end,变化会越来越慢. 公式:start=start+(end-start)/10;     这个10不是固定的,想分成多少份就分成 ...

  7. JS-特效 ~ 04. client对象、网页可视区域的宽高、client / offset / scroll 三大家族的区别、冒泡事件、事件委托、获取内嵌式和外链式属性getStyle(ele,attr) ;、缓动动画封装

    知识点: 模拟滚动条的解除事件问题 : event内置对象,包含 了大量事件: page兼容性: pageX || clientX + scool().top  : if (true === a)tr ...

  8. js简单动画:匀速动画、缓动动画、多物体动画以及透明度动画

    主要实现以下几种简单的动画效果(其实原理基本相同): 1.匀速动画:物体的速度固定 2.缓动动画:物体速度逐渐变慢 3.多物体动画 4.透明度动画 效果实现: 1.匀速动画(以物体左右匀速运动为例) ...

  9. js off 缓动动画

    动画也有很多种,一起来学习,缓动动画吧 缓动动画 1.缓动动画原理=盒子位置+(目标盒子位置-现在盒子位置)/10 2.步长越来越小 3.让步长越来越小的公式      步长=(目标位置-本身位置)/ ...

  10. JS实现缓动动画效果

    原理如下: 假设要从数值A变化到数值B,如果是线性运动,则每次移动距离是一样:如果是缓动,每次移动距离不一样.那如何才能不一样呢?很简单,按比例移动就可以. 例如:每次移动剩余距离的一半. 对吧,超容 ...

随机推荐

  1. DNS 是如何影响你冲浪速度的?

    本文详细介绍了 DNS 相关知识,包括 DNS 工作原理.如何提升域名解析速度.以及 DNS 记录与报文等内容. 1. 域名与域名服务器 在日常上网过程中,出于好记的原因,人们更喜欢在浏览器中输入网站 ...

  2. SpringCloud 消费请求Eureka调用服务提供者报错

    SpringCloud 消费请求Eureka调用服务提供者报错 springCloud 2022.0.1 springboot 3.0.2 消费程序 通过eureka集群查询服务,根据eureka中注 ...

  3. JS 计算两个时间戳相差年月日时分秒

    // JS 计算两个时间戳相差年月日时分秒 calculateDiffTime(startTime, endTime, type) { var runTime = parseInt(endTime - ...

  4. Channel和Stream的单双向问题

    stream分为input和output,为单向. channel为双向,可以write也可以read,但是通过inputstream或者outputstream获取的channle并不能实现双向的数 ...

  5. libco 源码剖析(1): 协程上下文切换之 32 位

    libco 源码剖析(1): 协程上下文切换之 32 位 相关背景资料 关于汇编语言及内存布局相关基础,参看 参考文献[0], 参考文献[1] 32 位协程上下文结构如下: // coctx.h st ...

  6. CodeQL练习1

    CodeQL官方准备了一些无关编程语言的QL语言练习,我这里整理稍许来记录学习一下. QL是一种逻辑编程语言,所以它是由逻辑公式构成的.QL使用常见的逻辑连接词(如and.or.not).量词(如fo ...

  7. 如何调用别人的接口(包含get请求post请求)

    对于如何调用第三方接口还是有些模糊,所以记录一下,上代码 package com.zhang.miaodou; import java.io.BufferedReader; import java.i ...

  8. cximage总括功能讲解

    CxImage的功能 Constructors  构造函数 Initialization  初始化 File 文件操作,主要是编解码 Generic 图像基本变化 DSP 图像处理操作 Paintin ...

  9. 记一次hooks陷阱

    今天写一个hook,正想发挥hooks这种高级复用方式来缩短我的开发时间,就出现了一个新bug. 我编写的这个hook用于管理数据列表状态.除了导出内部的状态外,还导出一些方法供外部调用.代码简化如下 ...

  10. linux上安装python3(yum方式)

    可联通外网的linux系统终端上安装python3 1,建立yum仓库: https://mirrors.163.com/centos/7.9.2009/os/x86_64/ 2,使用yum下载安装对 ...