日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

WPF与缓动(一) N次缓动

發(fā)布時(shí)間:2025/6/15 asp.net 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WPF与缓动(一) N次缓动 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? WPF與緩動(dòng)(一)? N次緩動(dòng)
??????????????????????????????????????????????????????????????????????????????? ?????? 周銀輝

如果我們希望制作的動(dòng)畫(huà)效果像現(xiàn)實(shí)生活中的運(yùn)動(dòng)一樣平滑, 比如汽車(chē)的啟動(dòng)與停止總有一個(gè)加速或減速的過(guò)程, 那么我們有必要研究一下"緩動(dòng)"

緩入: 速度逐漸增加的過(guò)程,比如汽車(chē)的啟動(dòng)
如果我們用曲線上的點(diǎn)的斜率表示速度,那么在數(shù)學(xué)上它對(duì)應(yīng)了下面這樣的曲線:

緩出:速度逐漸減小的過(guò)程,比如汽車(chē)的停止
在數(shù)學(xué)上它對(duì)應(yīng)了下面的曲線

就加速運(yùn)動(dòng)而言,? 根據(jù)以下位置與加速度等公式

我們可以得到,任意時(shí)刻的速度等于總的路程乘以當(dāng)前時(shí)間與總時(shí)間的比值的平方, 而總的路程實(shí)際將相當(dāng)與WPF中Animation的To與From的差值, 當(dāng)前時(shí)間與總時(shí)間的比值實(shí)際上相當(dāng)與WPF中animationClock.CurrentProgress.Value值.
除此之外,我們發(fā)現(xiàn),曲線的指數(shù)越大,點(diǎn)的斜率變化越快,那么加速度也就越大.
有了這些知識(shí),我們可以很好的模擬加速運(yùn)動(dòng)了
參考以下代碼

using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Windows.Media.Animation;
using?System.Windows;

namespace?EaseMoveDemo
{
????
public?class?EaseMoveAnimation?:?DoubleAnimationBase
????
{

????????
public?static?readonly?DependencyProperty?FromProperty?=?DependencyProperty.Register(
????????????
"From",?typeof(double?),?typeof(EaseMoveAnimation),?new?PropertyMetadata(null));

????????
public?static?readonly?DependencyProperty?ToProperty?=?DependencyProperty.Register(
????????????
"To",?typeof(double?),?typeof(EaseMoveAnimation),?new?PropertyMetadata(null));

????????
public?static?readonly?DependencyProperty?PowerProperty?=?DependencyProperty.Register(
????????????
"Power",?typeof(double?),?typeof(EaseMoveAnimation),?new?PropertyMetadata(null));

????????
public?double??From
????????
{
????????????
get
????????????
{
????????????????
return?(double?)this.GetValue(EaseMoveAnimation.FromProperty);
????????????}

????????????
set
????????????
{
????????????????
this.SetValue(EaseMoveAnimation.FromProperty,?value);
????????????}

????????}


????????
public?double??To
????????
{
????????????
get
????????????
{
????????????????
return?(double?)this.GetValue(EaseMoveAnimation.ToProperty);
????????????}

????????????
set
????????????
{
????????????????
this.SetValue(EaseMoveAnimation.ToProperty,?value);
????????????}

????????}


????????
/**////?<summary>
????????
///?冪指數(shù),值越大,曲線上點(diǎn)的斜率越大,加速度越大,設(shè)置為5時(shí)效果較好
????????
///?</summary>

????????public?double??Power
????????
{
????????????
get
????????????
{
????????????????
return?(double?)this.GetValue(EaseMoveAnimation.PowerProperty);
????????????}

????????????
set
????????????
{
????????????????
this.SetValue(EaseMoveAnimation.PowerProperty,?value);
????????????}

????????}


????????
protected?override?double?GetCurrentValueCore(double?defaultOriginValue,?double?defaultDestinationValue,?AnimationClock?animationClock)
????????
{
????????????
double?from?=?(this.From==null?defaultDestinationValue:(double)this.From);
????????????
double?to?=?(this.To==null?defaultOriginValue:(double)this.To);
????????????
double?delta?=?to?-?from;
????????????
double?power?=?this.Power?==?null???2?:?(double)this.Power;

????????????
//加速
????????????return?delta?*?Math.Pow(animationClock.CurrentProgress.Value,?power)?+?from;
????????????
//return?delta?*?Math.Pow(animationClock.CurrentProgress.Value,?1/power)?+?from;

????????????
//先加速后減速
????????????
//if?(animationClock.CurrentProgress.Value?<?0.5)
????????????
//{
????????????
//????return?delta?/?2?*?Math.Pow(animationClock.CurrentProgress.Value?*?2,?power)?+?from;
????????????
//}
????????????
//return?delta?/?2?*?Math.Pow((animationClock.CurrentProgress.Value?-?0.5)?*?2,?1/power)?+?delta?/?2?+?from;
????????}



????????
protected?override?System.Windows.Freezable?CreateInstanceCore()
????????
{
????????????
return?new?EaseMoveAnimation();
????????}

????}

}


下載源代碼



總結(jié)

以上是生活随笔為你收集整理的WPF与缓动(一) N次缓动的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 少妇做爰免费理伦电影 | 中文字幕亚洲乱码熟女一区二区 | 久久久久久久人妻无码中文字幕爆 | 四虎影视在线播放 | 91看片免费版 | 日韩第八页 | 男人天堂b | 噼里啪啦高清 | 欧美大肥婆大肥bbbbb | 欧美日韩精品网站 | 国产美女明星三级做爰 | 日韩欧美国产高清91 | 超碰在线播放97 | 尹人av| 欧美精品一区二区不卡 | 激情五月婷婷综合网 | 午夜精品久久久久久毛片 | 婷婷玖玖 | 亚洲在线观看视频 | 成年人视频在线播放 | 国产r级在线| aa片在线观看视频在线播放 | 亚洲综合在线第一页 | 久久视频在线 | 久久久久久av | 欧美日韩中文在线观看 | 美女毛片网站 | 欧美日韩另类在线 | 国产成人午夜 | 成人在线综合 | 6080午夜伦理 | 亚洲97在线| 深夜成人福利 | 亚洲第一综合网站 | 亚洲一区电影网 | 91蜜桃视频 | 亚洲有吗在线 | 欧美一级片黄色 | 成人午夜黄色 | 国产在线欧美 | 久久综合激情 | 亚洲在线免费观看视频 | 国产成人精品一区二区三区在线 | 床戏高潮呻吟声片段 | 天天操天天草 | 国产成人综合欧美精品久久 | 日韩欧美在线一区二区三区 | 亚洲精品视频一二三区 | av资源吧首页| 国产福利一区二区视频 | 国产精品欧美激情在线 | 精品国产专区 | xfplay5566色资源网站 | 91九色蝌蚪| 日韩一区二区三区中文字幕 | 亚洲综合情 | 成人女同av免费观看 | 欧美性开放视频 | 成人一区电影 | 97av在线 | 欧美精品自拍 | 农村少妇久久久久久久 | 欧美日韩国产在线观看 | 一级视频免费观看 | 欧美精品日韩精品 | 国产999久久久 | 国产精品视频久久久久久久 | 精品爆乳一区二区三区无码av | 中文字幕观看视频 | 亚洲精品久久久久久国 | 日韩免费在线观看 | 空姐吹箫视频大全 | 国产又黄又粗又硬 | 午夜免费体验区 | 狠狠综合久久 | 91在线视频网址 | 调教驯服丰满美艳麻麻在线视频 | 午夜黄色在线 | 欧美日韩一区二区三区电影 | 永久av在线免费观看 | 国产伦精品一区二区三区 | 人妻视频一区二区三区 | 成人在线免费av | 国产免费脚交足视频在线观看 | 欧美成人怡红院 | 69日本xxxxxxxx96| 极品美妇后花庭翘臀娇吟小说 | 国产91在线观看丝袜 | 久久777 | 亚洲精品免费视频 | 91精品国产欧美一区二区成人 | 公交上高潮的丁芷晴 | 浪漫樱花动漫在线观看免费 | 中文字幕区 | 天天综合91 | 欧美性大战久久久久久久 | 中文字幕免费播放 | 一区二区精品久久 | 久久久久国产精品区片区无码 |