[DllImport("gdi32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool BitBlt(IntPtr hdc, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc, int nXSrc, int nYSrc, long dwRop);
private const Int32 SRCCOPY = 0xCC0020;        private void button1_Click(object sender, EventArgs e)
        {
            flash.LoadMovie(0, "d:\\1.swf");
            for (int i = 0; i < flash.TotalFrames; i++)
            {
                flash.FrameNum = i;
                Application.DoEvents();
                GetImageOfControl(flash).Save("d:\\image\\" + i + ".bmp");
            }
        }        public static Bitmap GetImageOfControl(Control control)
        {            var w = control.Size.Width;
            var h = control.Size.Height;            Graphics gOfCtrl = control.CreateGraphics();
            var bmp = new Bitmap(w, h, gOfCtrl);            Graphics gOfBmp = Graphics.FromImage(bmp);            IntPtr dc1 = gOfCtrl.GetHdc();
            IntPtr dc2 = gOfBmp.GetHdc();            BitBlt(dc2, 0, 0, w, h, dc1, 0, 0,  SRCCOPY);            gOfCtrl.ReleaseHdc(dc1);
            gOfBmp.ReleaseHdc(dc2);            gOfCtrl.Dispose();
            gOfBmp.Dispose();            return bmp;
        }

解决方案 »

  1.   

    需要用到 Shockwave Flash Object 这个 com 组件
      

  2.   


    这样写不能对只是1帧的swf图片转换成N张bmp吧,请直接连接我QQ120052086,谢谢
      

  3.   

    你的题目是 “将swf的每一帧内容转成图片”后面又说“将只有一帧的flash 转换为N张图片”没弄懂你的意思
      

  4.   


    也就是说我这个swf文件只有一帧,可是是个动画,可以这一帧里放了一个gif动画
      

  5.   

    不能。swf文件的文件结构了解下就知道,不可能了。
      

  6.   

    i = 1
    do{
      播放 i
      暂停
      截屏
      i++}while