MFC窗口中设置一个实体从一个位置移动到另一个位置的动画

时间:2021-12-18 10:53:26
在窗口中已经画了很多实体,实体之间有连线,当然这些实体会有相应的布局,现在的问题是,实体根据不同布局而呈现不同的位置,那么就会有初始位置,和转换不同布局后的终点位置,我的目的是,使实体不是立刻跳到最终位置,而是在初始位置和终点位置有一段‘移动的动画’,就是实体从初始位置‘移动’到终点位置,求助各位大神,这个要怎么做???

5 个解决方案

#1


用SetTimer定时器,在默认回调中OnTimer中处理,触发WM_PAINT消息,每次PAINT的关键数据,点位置保存在一个容器中,根据触发的次数选择容器中不同的数据绘制即可。

#2


嗯好,十分感谢,我也正常尝试用这个方法解决,加个QQ286837683吧?以后有问题可以互相探讨下。

#3


回去加你。

#4


关键点是要计算出所有中间经过的位置,这就需要参考LineDDA算法了


BOOL LineDDA(
  int nXStart,             // x-coordinate of starting point
  int nYStart,             // y-coordinate of starting point
  int nXEnd,               // x-coordinate of ending point
  int nYEnd,               // y-coordinate of ending point
  LINEDDAPROC lpLineFunc,  // callback function
  LPARAM lpData            // application-defined data
);


通过这个算法可以逐渐将窗口移动到最终位置

#5


引用 1 楼  的回复:
用SetTimer定时器,在默认回调中OnTimer中处理,触发WM_PAINT消息,每次PAINT的关键数据,点位置保存在一个容器中,根据触发的次数选择容器中不同的数据绘制即可。

SetTimer如何使用,我现在是想每隔一定的时间,调用一个函数,能否具体到每隔步骤怎么做,分都给你了

#1


用SetTimer定时器,在默认回调中OnTimer中处理,触发WM_PAINT消息,每次PAINT的关键数据,点位置保存在一个容器中,根据触发的次数选择容器中不同的数据绘制即可。

#2


嗯好,十分感谢,我也正常尝试用这个方法解决,加个QQ286837683吧?以后有问题可以互相探讨下。

#3


回去加你。

#4


关键点是要计算出所有中间经过的位置,这就需要参考LineDDA算法了


BOOL LineDDA(
  int nXStart,             // x-coordinate of starting point
  int nYStart,             // y-coordinate of starting point
  int nXEnd,               // x-coordinate of ending point
  int nYEnd,               // y-coordinate of ending point
  LINEDDAPROC lpLineFunc,  // callback function
  LPARAM lpData            // application-defined data
);


通过这个算法可以逐渐将窗口移动到最终位置

#5


引用 1 楼  的回复:
用SetTimer定时器,在默认回调中OnTimer中处理,触发WM_PAINT消息,每次PAINT的关键数据,点位置保存在一个容器中,根据触发的次数选择容器中不同的数据绘制即可。

SetTimer如何使用,我现在是想每隔一定的时间,调用一个函数,能否具体到每隔步骤怎么做,分都给你了