Example #1
0
        public static Image StaticTakeScreenshot(String MovieURL, Size Size, int FrameNum = 0, FlashScaleMode ScaleMode = FlashScaleMode.showAll, Color? BackgroundColor = null)
        {
            var flash = new ExAxShockwaveFlash();

            //IFormatter formatter = new BinaryFormatter();
            //var state = (AxHost.State)formatter.Deserialize(new MemoryStream(OcxData));
            //Console.WriteLine(state);

            if (!File.Exists(MovieURL)) throw(new Exception("Flash Movie '" + MovieURL + "' doesn't exists."));

            String Hash = "ExAxShockwaveFlashCache_" + MD5Hex(MovieURL) + "_" + MD5Hex(File.GetLastWriteTimeUtc(MovieURL).ToString()) + "_" + Size.Width + "x" + Size.Height + "_" + FrameNum + "_" + ScaleMode + "_" + MD5Hex(BackgroundColor.ToString());
            String CacheTempFile = Path.GetTempPath() + @"\" + Hash + ".bmp";

            if (File.Exists(CacheTempFile))
            {
                return Image.FromFile(CacheTempFile);
            }

            var tempForm = new Form();
            tempForm.BackColor = Color.White;

            flash.BeginInit();
            {
                tempForm.Controls.Add(flash);
                flash.Size = Size;
                //flash.Visible = false;
            }
            flash.EndInit();
            //flash.PreferredSize = Size;

            flash.LoadMovie(0, MovieURL);
            flash.Size = Size;
            flash.Quality = 1;
            flash.GotoFrame(FrameNum);
            flash.ScaleMode = (int)ScaleMode;

            //flash.BGColor = "ffffff";

            if (BackgroundColor.HasValue)
            {
                //Console.WriteLine(BackgroundColor);
                //Console.WriteLine(BackgroundColor.Value.R);
                //flash.BGColor = "ffffff";
                //flash.WMode = "Window";
                //flash.BackColor = Color.White;
                //flash.BackgroundColor = BackgroundColor.Value.ToArgb();
                flash.BackgroundColor = (BackgroundColor.Value.R << 0) | (BackgroundColor.Value.G << 8) | (BackgroundColor.Value.B << 16);
            }
            else
            {
                flash.WMode = "Transparent";
                //Console.WriteLine("Transparent");
            }

            //Thread.Sleep(20);
            Bitmap Screenshot = flash.TakeScreenshot(Size);

            flash.Dispose();
            tempForm.Dispose();

            Screenshot.Save(CacheTempFile);

            return Screenshot;
        }
Example #2
0
 public static Image StaticTakeScreenshot(String MovieURL, int FrameNum = 0, FlashScaleMode ScaleMode = FlashScaleMode.showAll, Color? BackgroundColor = null)
 {
     return StaticTakeScreenshot(MovieURL, new Size(100, 100), FrameNum, ScaleMode, BackgroundColor);
 }