public void ShowGraphic(string FileName, bool GraphicInWindow, int EffectIndex) { do { Thread.Sleep(1); }while (_loading); try { if (!File.Exists(FileName) || !_my_effect_ready) { return; } Point point = new Point(0, 0); Size newSize = Size; if (GraphicInWindow) { newSize = _graphic_size; } Bitmap bitmap = new Bitmap(Image.FromFile(FileName), newSize); _filename = FileName; if (_mci != null) { _mci.Close(); _mci.Dispose(); _mci = (Mci)null; } if (_mci_timer != null) { _mci_timer.Tick -= new EventHandler(_mci_timer_Tick); _mci_timer.Dispose(); } showPictureBoxAsync(pictureBox1, GraphicInWindow); if (_actual_picture == null) { _actual_picture = (Image) new Bitmap(newSize.Width, newSize.Height); Graphics.FromImage(_actual_picture).Clear(Color.Black); } _get_effect(EffectIndex); try { Image image = Image.FromFile(FileName); FrameDimension dimension = new FrameDimension(image.FrameDimensionsList[0]); if (image.GetFrameCount(dimension) > 1) { _my_effect = (Effects.IEffect)null; _actual_picture = image; } } catch { } if (_my_effect != null) { do { Thread.Sleep(1); }while (!_my_effect_ready); _my_effect_ready = false; _my_effect.Ready += new Effects.ReadyDelegate(_my_effect_Ready); _my_effect.PercentComplete += new Effects.PercentCompletedDelegate(_my_effect_PercentComplete); _my_effect.Fade(pictureBox1, _actual_picture, (Image)bitmap); _actual_picture = Image.FromFile(FileName); } else { pictureBox1.Image = Image.FromFile(FileName); } } catch { try { if (_mci != null) { _mci.Close(); _mci.Dispose(); _mci = (Mci)null; } if (_mci_timer != null) { _mci_timer.Tick -= new EventHandler(_mci_timer_Tick); _mci_timer.Dispose(); } _mci = new Mci(); _mci.Open(FileName, (Control)pictureBox1); showPictureBoxAsync(pictureBox1, GraphicInWindow); if (_mci_timer != null) { _mci_timer.Tick -= new EventHandler(_mci_timer_Tick); _mci_timer.Dispose(); } _mci_timer = (Timer)null; _mci_timer = new Timer(); int num = 1; try { num = _mci.Length; } catch { } _mci_timer.Interval = num; _mci_timer.Tick += new EventHandler(_mci_timer_Tick); try { _mci.SetRectangle(0, 0, pictureBox1.Width, pictureBox1.Height); } catch (Exception ex) { ErrorLogger.addToLog(ex.StackTrace, ex.Message); } try { _mci.Volume = 0; } catch (Exception ex) { ErrorLogger.addToLog(ex.StackTrace, ex.Message); } try { _mci.Play(false); } catch (Exception ex) { ErrorLogger.addToLog(ex.StackTrace, ex.Message); } try { _mci_timer.Start(); } catch (Exception ex) { ErrorLogger.addToLog(ex.StackTrace, ex.Message); } _actual_picture = (Image)null; } catch (Exception ex) { ErrorLogger.addToLog(ex.StackTrace, ex.Message); } } }