swf转图片

// flash : AxShockwaveFlashObjects.AxshockwaveFlash

flash.LoadMovie(0, @"H:\WorkProject\guoyue\0十大古曲\1春江花月夜.swf"); flash.Play(); for (int i = 0; i < flash.TotalFrames; i++) { flash.FrameNum = i; Application.DoEvents(); var bmp = GetImageOfControl(flash); bmp.Save("d:\\backup\\" + i + ".bmp"); }

 

private  Bitmap GetImageOfControl(Control control)
        {

            //var w = control.Size.Width;
            //var h = control.Size.Height;

            var w = 1920;
            var h = 1080;


            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, 13369376);

            gOfCtrl.ReleaseHdc(dc1);
            gOfBmp.ReleaseHdc(dc2);

            gOfCtrl.Dispose();
            gOfBmp.Dispose();

            return bmp;
        }
[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
        private static extern bool BitBlt(
            IntPtr hdcDest,//目标设备的句柄
            int nXDest,//目标对象的左上角x坐标
            int nYDest,//目标对象的左上角Y坐标
            int nWidth,//目标对象的矩形宽度
            int nHeight,//目标对象的矩形长度
            IntPtr hdcSrc,//源设备的句柄
            int nXSrc,//源对象的左上角x坐标
            int nYSrc,//源对象的左上角y坐标
            System.Int32 dwRop//光栅的操作值
            );

 

 这样处理后每张图片都是一片黑色的,不知哪里错了

posted on 2022-02-16 18:46  生活还是要继续  阅读(113)  评论(0编辑  收藏  举报

导航