急求助:flash控件(CShockwaveFlash)播放时如何把每帧的图片保存下来,然后转换为BMP图片格式???望大家多多指点

解决方案 »

  1.   

    楼主可以参数一下这篇文章
    http://www.codeproject.com/KB/COM/flashcontrol.aspx
    应该有类似得到原始数据的方法
    另外还可以选择如GAMESWF SWFTOOL之类的开源实现
      

  2.   

    帮你顶一下!
    楼主想直接通过FLash控件的方法或接口来保存图像肯定是不可行的,根本就没有这样的方法或接口吧。
    但是最起码Flash控件也是一个窗口,是窗口就有CDC,有CDC就可以建立内粗DC将CDC当前的绘图拷贝到内存DC;
    通过内存DC再建立BMP图像应该可以。可是,我想我们大家对Flash控件内部的很多处理都是不清楚的,具体是个什么样子我是没有做过,仅供楼主参考。
      

  3.   

    4喽说的有点道理获取flash窗口DC 按时间间隔截取保存成BMP是可以实现的 但是并不是按帧来保存如果要通过控件的话 控件必须提供这样的接口来输出图像,想必你那个也只不过是用来显示FLASH的控件罢了,应该不会有这样的功能。不过gif是可以按帧来输出的
      

  4.   

    谢谢指点..Flash总的帧数可以得到,但如何控制使它一帧帧播放.同时保存它的图片.....
    有没有一种好的方法实现上面功能?
      

  5.   

    这个控件就是VC组件里面的flash控件.如果这样不行的话.有没其它的方法得到它播放的每一帧效果图片,然后通过截图再来转换成BMP图片...?
      

  6.   

    http://c.chinaitlab.com/cckaifa/multimedia/200805/747391.html
    我觉得这个或许能给你点启发
      

  7.   

    呵呵 你要知道Flash动画跟某些视频还不一样,Flash其实不是一帧一帧的图像组成的。
    比如一个0秒到10秒的矩形移动,如果是通过Flash内部的“补间动画”来做的话实现的话,第0秒跟第10秒的帧是有确切的图像的,而中间
    是没有的(具体是怎么实现的不太清楚,可能是通过算法来实现的);这个你如果使用闪客精灵来看的话,你就知道了。所以Flash是没有中间过程的图片的。
    除非所有帧都是关键帧。 但是都是关键帧的话就失去了Flash动画的初衷了,那样文件会很大的,网络应用会受限。你如果想把每一帧的图像都保存下来我认为除了使用拷屏命令来截取中间过程画面外,程序上来实现没有什么好方法。所以,我认为你还是需要取得VC当中Flash控件窗口的DC然后每一帧截屏一次,才能保存到每一帧的图像,但是这个过程在Flash的时间以低于秒为单位的
    帧速率下,工作量很大啊,时间上控制也很难做到。说了这么多都怕吓到楼主了,不过也不能灰心啊,总该是有办法的。 我只是说了一些我知道的东西,楼主再多多查查资料,我也等你问题的最终解答。
      

  8.   

    帮自己再顶下。如何在Flash的时间以低于秒为单位的 
    帧速率下实现截屏效果?或者播放的时候截屏每一帧有人可以指点下吗?
      

  9.   

    如何控制他一帧帧播放问题。我给你说一个变态的思想 就是用sleep(单帧播放时间)来阻塞窗口 因为你的控件内部也没有给出这样的显示功能所以 能不能实现单帧播放完全在于人家的控件你可以开辟线程创建一个窗口 设计好多长时间算一帧 让他以这个时间为单位 单帧播放按钮点击的时候 利用sleep来暂停这个想法很变态。我也没试过 但恐怕没有更多的方法了。 这个方法即使能做到单帧播放但还是会存在很多问题。