想做一个轮盘(轮盘赌)转动的动画,结果要能控制,不知道该如何下手,希望大家给点提示

解决方案 »

  1.   

    通常游戏中的做法是先产生轮盘的转动分解图片,就是用专业的图像处理软件把图片一个单位一个单位地转动,每次转动结果保存为一幅图片。如果你的一个单位定义为1度的话共需保存360幅图片。如果你的一个转动单位定义为2度的话共需保存180幅图片...显示的时候按顺序把这些图片显示出来,就看到了轮盘转动的动画。因为游戏中的计算量太大,所以能先计算的部分就都先算出来。这也是现在的游戏无比巨大的原因。你的程序不要求速度的话可以优化一下。比如只保存 45 度的转动分解图片,其它角度的图片可以用镜像函数极快地产生出来。如果你的cpu实在太快,你又想追求编程技巧的话,就自己写一个图像变换函数将图片进行即时转动,那么你就不用保存多余的图片了。
      

  2.   

    icansaymyabc(学习与进步) 已经把图片的组织方式和程序的工作原理基本说清楚了。实现起来,其实就是用定时器刷屏来重画每个分解图片,根据人眼视觉停滞的特点就会感觉图片在动了。可能开始和结束的时候速度要逐渐变快和逐渐变慢,可以通过 几个(而不是一个)定时周期来刷一次屏来实现。
    可控制的实现也很简单,但按下“停止”按钮时,可能让它去修改类变量,例如BOOL m_bIsStop为TRUE......说了这么多废话,呵呵...
      

  3.   

    用多幅图像那是比较传统的做法,实际应用起来会有很多不方便的地方,最明显的是是占用内存,因为如果你要旋转的时候比较平滑就得用较多的帧数,假设是100x100的小图100帧256色的就至少需要1M的内存。
    如果可能建议用DirectX来做这个效果,Direct提供了Blt()的时候指定旋转角度。DirectX可以嵌在一般对话框上没有问题。如果你是不怕麻烦,大可以用OpenGL或者Direct3D做出来就更完美了,只需要一个固定的角度旋转一个平面就可以了。
    当然如果是简单的应用,而且不在乎内存消耗的话,用多帧的方法也可以。
      

  4.   

    DirectDarw先建立主表面和后备表面再创建一个 轮盘图象的表面把图象表面旋转拷贝到后备表面 然后换页 
    就这么循环