当前位置: 首页 > news >正文

购买网站模版可以自己做吗2023年6月疫情恢复

购买网站模版可以自己做吗,2023年6月疫情恢复,网络招商,建设网站备案不通过怎么办原文:WPF与缓动(一) N次缓动WPF与缓动(一) N次缓动 周银辉如果我们希望制作的动画效果像现实生活中的运动一样平滑, 比如汽车的启动与停止总有一个加速或减速的过程, 那么我们有必要研…
原文:WPF与缓动(一) N次缓动

                                                             WPF与缓动(一)  N次缓动
                                                                                       周银辉

如果我们希望制作的动画效果像现实生活中的运动一样平滑, 比如汽车的启动与停止总有一个加速或减速的过程, 那么我们有必要研究一下"缓动"

缓入: 速度逐渐增加的过程,比如汽车的启动
如果我们用曲线上的点的斜率表示速度,那么在数学上它对应了下面这样的曲线:
easeIn.PNG
缓出:速度逐渐减小的过程,比如汽车的停止
在数学上它对应了下面的曲线
easeOut.PNG
就加速运动而言,  根据以下位置与加速度等公式
formula2.PNG
我们可以得到,任意时刻的速度等于总的路程乘以当前时间与总时间的比值的平方, 而总的路程实际将相当与WPF中Animation的To与From的差值, 当前时间与总时间的比值实际上相当与WPF中animationClock.CurrentProgress.Value值.
除此之外,我们发现,曲线的指数越大,点的斜率变化越快,那么加速度也就越大.
有了这些知识,我们可以很好的模拟加速运动了
参考以下代码

img_a6339ee3e57d1d52bc7d02b338e15a60.gifusing System;
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
using System.Collections.Generic;
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
using System.Text;
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
using System.Windows.Media.Animation;
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
using System.Windows;
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
namespace EaseMoveDemo
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif    
public class EaseMoveAnimation : DoubleAnimationBase
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif    
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif        
public static readonly DependencyProperty FromProperty = DependencyProperty.Register(
img_33d02437d135341f0800e3d415312ae8.gif            
"From"typeof(double?), typeof(EaseMoveAnimation), new PropertyMetadata(null));
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif        
public static readonly DependencyProperty ToProperty = DependencyProperty.Register(
img_33d02437d135341f0800e3d415312ae8.gif            
"To"typeof(double?), typeof(EaseMoveAnimation), new PropertyMetadata(null));
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif        
public static readonly DependencyProperty PowerProperty = DependencyProperty.Register(
img_33d02437d135341f0800e3d415312ae8.gif            
"Power"typeof(double?), typeof(EaseMoveAnimation), new PropertyMetadata(null));
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif        
public double? From
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif            
get
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif            
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif                
return (double?)this.GetValue(EaseMoveAnimation.FromProperty);
img_105a1e124122b2abcee4ea8e9f5108f3.gif            }

img_33d02437d135341f0800e3d415312ae8.gif            
set
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif            
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif                
this.SetValue(EaseMoveAnimation.FromProperty, value);
img_105a1e124122b2abcee4ea8e9f5108f3.gif            }

img_105a1e124122b2abcee4ea8e9f5108f3.gif        }

img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif        
public double? To
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif            
get
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif            
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif                
return (double?)this.GetValue(EaseMoveAnimation.ToProperty);
img_105a1e124122b2abcee4ea8e9f5108f3.gif            }

img_33d02437d135341f0800e3d415312ae8.gif            
set
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif            
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif                
this.SetValue(EaseMoveAnimation.ToProperty, value);
img_105a1e124122b2abcee4ea8e9f5108f3.gif            }

img_105a1e124122b2abcee4ea8e9f5108f3.gif        }

img_33d02437d135341f0800e3d415312ae8.gif
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
/**//// <summary>
img_33d02437d135341f0800e3d415312ae8.gif        
/// 幂指数,值越大,曲线上点的斜率越大,加速度越大,设置为5时效果较好
img_105a1e124122b2abcee4ea8e9f5108f3.gif        
/// </summary>
img_33d02437d135341f0800e3d415312ae8.gif        public double? Power
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif            
get
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif            
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif                
return (double?)this.GetValue(EaseMoveAnimation.PowerProperty);
img_105a1e124122b2abcee4ea8e9f5108f3.gif            }

img_33d02437d135341f0800e3d415312ae8.gif            
set
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif            
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif                
this.SetValue(EaseMoveAnimation.PowerProperty, value);
img_105a1e124122b2abcee4ea8e9f5108f3.gif            }

img_105a1e124122b2abcee4ea8e9f5108f3.gif        }

img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif        
protected override double GetCurrentValueCore(double defaultOriginValue, double defaultDestinationValue, AnimationClock animationClock)
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif            
double from = (this.From==null?defaultDestinationValue:(double)this.From);
img_33d02437d135341f0800e3d415312ae8.gif            
double to = (this.To==null?defaultOriginValue:(double)this.To);
img_33d02437d135341f0800e3d415312ae8.gif            
double delta = to - from;
img_33d02437d135341f0800e3d415312ae8.gif            
double power = this.Power == null ? 2 : (double)this.Power;
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif            
//加速
img_33d02437d135341f0800e3d415312ae8.gif
            return delta * Math.Pow(animationClock.CurrentProgress.Value, power) + from;
img_33d02437d135341f0800e3d415312ae8.gif            
//return delta * Math.Pow(animationClock.CurrentProgress.Value, 1/power) + from;
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif            
//先加速后减速
img_33d02437d135341f0800e3d415312ae8.gif            
//if (animationClock.CurrentProgress.Value < 0.5)
img_33d02437d135341f0800e3d415312ae8.gif            
//{
img_33d02437d135341f0800e3d415312ae8.gif            
//    return delta / 2 * Math.Pow(animationClock.CurrentProgress.Value * 2, power) + from;
img_33d02437d135341f0800e3d415312ae8.gif            
//}
img_33d02437d135341f0800e3d415312ae8.gif            
//return delta / 2 * Math.Pow((animationClock.CurrentProgress.Value - 0.5) * 2, 1/power) + delta / 2 + from;
img_105a1e124122b2abcee4ea8e9f5108f3.gif
        }
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif        
protected override System.Windows.Freezable CreateInstanceCore()
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif        
img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif{
img_33d02437d135341f0800e3d415312ae8.gif            
return new EaseMoveAnimation();
img_105a1e124122b2abcee4ea8e9f5108f3.gif        }

img_105a1e124122b2abcee4ea8e9f5108f3.gif    }

img_05dd8d549cff04457a6366b0a7c9352a.gif}

img_a6339ee3e57d1d52bc7d02b338e15a60.gif


下载源代码



http://www.lbrq.cn/news/2437201.html

相关文章:

  • 网站产品链接怎么做西安seo王
  • 网站建设前期准备工作营销推广与策划
  • tomcat做网站属于什么网络运营师资格证
  • wordpress文章预览沈阳网站seo公司
  • 网站建设需要什么技术收录优美图片
  • 基层建设论文收录在哪个网站sem竞价推广代运营
  • 不限空间的免费网站海南百度推广总代理
  • 企业的网站建设策划书百度关键词规划师工具
  • 电子商务网站建设的过程买号链接
  • 崇礼网站建设seo销售好做吗
  • 企业网站用什么程序好关键词排名关键词快速排名
  • 靠谱的建站正规公司郑州网络营销公司哪家好
  • ps做网站连接网站代理公司
  • 网站推广合作谷歌排名算法
  • 什么网站可以做卷子成品网站seo
  • 动漫设计专业需要学什么seo百度网站排名软件
  • 网站在谷歌怎么做排名东莞做网站排名优化推广
  • 公司网站建设进度计划书百度最新版app下载安装
  • 网站开发需求分析参考文献成都网站seo排名优化
  • 怎么用小程序做微网站泰州seo外包公司
  • 网站建设案例展示怎样在百度上宣传自己的产品
  • wordpress主题无法创建目录seo推广软件
  • 门户网站建设合同提高搜索引擎检索效果的方法
  • 南昌市建设监督网站站长个人网站推广平台大全
  • 中企动力做网站怎么样佛山网站优化
  • 昆明免费网站建设友链交易交易平台
  • 泉州公司建设网站seo在线诊断工具
  • 做网站 能挣钱吗青岛谷歌优化
  • wordpress 去掉页头seo研究中心培训机构
  • 如何用wordpress做企站他达那非片能延时多久
  • 类加载过程及双亲委派模型
  • 苹果app应用ipa文件程序开发后如何运行到苹果iOS真机上测试?
  • Windows 编程辅助技能:转到文档
  • 碰一碰发视频源码搭建:支持OEM
  • 网络协议(四)网络层 路由协议
  • 理解向量及其运算-AI云计算数值分析和代码验证