UI动画的标准方式是什么?

Cod*_*gry 6 c++ windows user-interface animation direct2d

我工作的一个搭载UI库D2D,DWriteWic为(SDK API)本机C++桌面应用程序 (如无XAML,没有WinRT的,只是老派C++) .我已准备好编写一个无窗口UI,为我的工具提供更现代的(如本世纪的外观)C++.

我是一名内心的后卫,所以我花了很少的时间在UI上,并且大部分都与Windows标准和通用控件以及一些自定义绘制的GDI东西进行了交互.无论如何,没有什么花哨的.

我正在尝试,D2D我有兴趣了解UI动画的标准方法.就像当你将鼠标悬停在一个按钮上,使边框发光一点,或者一个UI元素由于交互而平滑移动,或者某些东西从屏幕上消失.(想想jQuery在UX的经济中褪色,滑动和如此短暂但有意义的动画)

考虑到这一点,我想到了两种处理UI动画的方法:

  • 一个独立的线程处理的动画队列中的计算,而UI线程绘制的结果.每次交互都会将动画作业放入队列中,线程会计算内容并在元素被绘制之前重新定位元素.
  • 使用相同的线程计时器来安排和迭代动画.

备用线程工作者方法似乎是一个好方法......但需要一点互锁时可视属性已更新,所以它不会发生,而实际绘制,以保持一致性.

现在,对于单线程UI ...定时器似乎是解决方案.这样可以确保绘图不会与动画计算重叠.但对我来说,感觉很尴尬.我不习惯单线生活方式.:)

还有另外一种方法吗?或者推荐哪种方法?我很欣赏有关现有实施细节或阅读材料的任何信息.

PS:如果downvoters或那些请求关闭的人实际上有理由,我会很感激.(1)如果你不知道我在问什么,那就继续......这绝对不是你的问题.(2)如果这对你来说太明显/简单,那就回答吧.---除非你是巨魔,否则我没有看到第三个原因.---或者这是一个非常愚蠢的问题,但正如我所说,我是十年+后卫,所以我可以逃脱它.

Cod*_*gry 5

好吧,Windows似乎有一个API用于一切.:)

我刚刚找到了Windows动画管理器.它不仅可以满足我的需求,而且在页面的最后,它有一些非常好的视频,解释了UI动画概念以及它们如何使用Animation Manager.它是一组专为C++使用而设计的COM对象.

PS:作为奖励,它的图形平台是独立的.所以它适用于GDI,GDI +,Direct2D ......

PPS:一天后,我已经咬了它的牙齿,这是非常好的.我得到的图形元素可以预测地以最少的代码在屏幕上移动.这是逻辑.一个问题是它只能为DOUBLE值设置动画.因此它对POINT,RECT,SIZE,POLYGON,多个FLOAT,PATH等没有任何概念或支持.一旦我理解它是如何正常工作的,我将包装它并添加对上述数据类型的支持我就是完成.