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//光栅的操作值
);
这样处理后每张图片都是一片黑色的,不知哪里错了