示例#1
0
        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);
                }
            }
        }