试图找出在一定时间内褪色颜色的方程式 我现在在C++中用SFML创建一个logo序列,想输入一个期望的时间,然后在那个时间内淡出,比如说,如果输入是3,那么淡出颜色,直到3秒上升。颜色整数的最大值(作为一种颜色)为255(作为白色)。这是我当前的代码: sf::Time fadeCalc = clock.getElapsedTime(); int f = fadeCalc.asMilliseconds(); int l = logoLength.asSeconds(); int iColor = "Equation needed using variables" sf::Color fadeColor(iColor,iColor,iColor); Fade.setFillColor(fadeColor);

试图找出在一定时间内褪色颜色的方程式 我现在在C++中用SFML创建一个logo序列,想输入一个期望的时间,然后在那个时间内淡出,比如说,如果输入是3,那么淡出颜色,直到3秒上升。颜色整数的最大值(作为一种颜色)为255(作为白色)。这是我当前的代码: sf::Time fadeCalc = clock.getElapsedTime(); int f = fadeCalc.asMilliseconds(); int l = logoLength.asSeconds(); int iColor = "Equation needed using variables" sf::Color fadeColor(iColor,iColor,iColor); Fade.setFillColor(fadeColor);,c++,time,sfml,equation,fading,C++,Time,Sfml,Equation,Fading,任何帮助都将不胜感激!很抱歉,我想不出更简单的解释方法。您将在总褪色时间内从开始颜色褪色到结束颜色,每画一步的时间为经过时间 因此,在每个绘制步骤中,您都需要将颜色设置为开始颜色+((结束颜色-开始颜色)*(经过的时间/总时间))。这将得到您想要完成的更改量,计算出此时应发生的更改百分比,然后将更改量添加到初始金额中 例如,如果你想从100到255,而它是3000毫秒中的1000毫秒,那么你会期望从100到255,或者151.6667(151被截断)。如果是2/3,则为203.333。等等 一旦

任何帮助都将不胜感激!很抱歉,我想不出更简单的解释方法。

您将在
总褪色时间
内从
开始颜色
褪色到
结束颜色
,每画一步的时间为
经过时间

因此,在每个绘制步骤中,您都需要将颜色设置为
开始颜色+((结束颜色-开始颜色)*(经过的时间/总时间))
。这将得到您想要完成的更改量,计算出此时应发生的更改百分比,然后将更改量添加到初始金额中

例如,如果你想从100到255,而它是3000毫秒中的1000毫秒,那么你会期望从100到255,或者151.6667(151被截断)。如果是2/3,则为203.333。等等


一旦您>=您的
总时间
,只需将
开始颜色
设置为
结束颜色

非常感谢!这是一个完美的答案,我简直无法理解。