CAccelerateDecelerateTransition 这个组件怎么使用,请详细讲解

lixiang li 40 信誉分
2024-05-13T08:15:46.8266667+00:00

CAccelerateDecelerateTransition 里面的

CAccelerateDecelerateTransition 方法

Create方法这两个方法怎么使用,请举例说明
Visual Studio
Visual Studio
一系列 Microsoft 集成开发工具套件,用于生成适用于 Windows、Web 和移动设备的应用程序。
86 个问题
C++
C++
一种通用的高级编程语言,作为 C 编程语言的扩展而创建,除了用于低级别内存操作的功能外,还具有面向对象、泛型和功能性等特点。
119 个问题
{count} 票

1 个答案

排序依据: 非常有帮助
  1. Minxin Yu 10,461 信誉分 Microsoft 供应商
    2024-05-14T06:35:51.0933333+00:00

    您好

    查看源代码可以得知 CAccelerateDecelerateTransition是对IUIAnimationTransitionLibrary::CreateAccelerateDecelerateTransition method进行了简单的封装。

    pLibrary->CreateAccelerateDecelerateTransition中使用了构造函数和create()里面填入的参数 (create的第二个参数为不使用),并将结果保存到[out]参数&m_transition中。m_transition是父类CBaseTransition的成员变量,使用GetTransition得到值。
    User's image

    源代码:

    class CAccelerateDecelerateTransition : public CBaseTransition
    {
    public:
    	/// <summary>
    	/// Constructs a transition object.
    	/// </summary>
    	/// <param name="duration">The duration of the transition. </param>
    	/// <param name="finalValue">The value of the animation variable at the end of the transition. </param>
    	/// <param name="accelerationRatio">The ratio of the time spent accelerating to the duration.</param>
    	/// <param name="decelerationRatio">The ratio of the time spent decelerating to the duration. </param>
    	CAccelerateDecelerateTransition(UI_ANIMATION_SECONDS duration, DOUBLE finalValue, DOUBLE accelerationRatio = 0.3,
    		DOUBLE decelerationRatio = 0.3) : m_duration(duration), m_finalValue(finalValue),
    		m_accelerationRatio(accelerationRatio), m_decelerationRatio(decelerationRatio)
    	{
    		m_type = ACCELERATE_DECELERATE;
    	}
    public:
    	/// <summary>
    	/// The duration of the transition.
    	/// </summary>
    	UI_ANIMATION_SECONDS m_duration;
    	/// <summary>
    	/// The value of the animation variable at the end of the transition.
    	/// </summary>
    	DOUBLE m_finalValue;
    	/// <summary>
    	/// The ratio of the time spent accelerating to the duration.
    	/// </summary>
    	DOUBLE m_accelerationRatio;
    	/// <summary>
    	/// The ratio of the time spent decelerating to the duration.
    	/// </summary>
    	DOUBLE m_decelerationRatio;
    	/// <summary>
    	/// Calls the transition library to create encapsulated transition COM object.
    	/// </summary>
    	/// <returns>
    	/// TRUE if transition is created successfully; otherwise FALSE.
    	/// </returns>
    	/// <param name="pLibrary">A pointer to transition library, which is responsible for creation of standard transitions.</param>
    	/// <param name="pFactory">A pointer to transition factory, which is responsible for creation of custom transitions.</param>
    	BOOL Create(IUIAnimationTransitionLibrary* pLibrary, IUIAnimationTransitionFactory* pFactory) override
    	{
    		UNREFERENCED_PARAMETER(pFactory);
    		Clear();
    		if (pLibrary != NULL)
    		{
    			HRESULT hr = pLibrary->CreateAccelerateDecelerateTransition(m_duration, m_finalValue, m_accelerationRatio,m_decelerationRatio, &m_transition);
    			return SUCCEEDED(hr);
    		}
    		return FALSE;
    	}
    };
    

    参考 CreateAccelerateDecelerateTransition Example Code

    	CoInitialize(NULL);
       //填入两个double值
    	CAccelerateDecelerateTransition transition(1/*DURATION*/,1 /*FinalValue*/);
    	IUIAnimationTransitionLibrary* m_aniPtr;
    	auto hr = CoCreateInstance(
    		CLSID_UIAnimationTransitionLibrary,
    		NULL,
    		CLSCTX_INPROC_SERVER,
    		IID_PPV_ARGS(&m_aniPtr)
    	);
    	bool res = transition.Create(m_aniPtr, NULL);
    	//
    	CoUninitialize();
    

    res返回true则转换创建成功。


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。 注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。