/// <summary> /// Show all the frames of an image. /// </summary> /// <param name="pictureArgs">the image details</param> private void ShowFrames(object pictureArgs) { f0t0page.DisplayPictureEventArgs e = pictureArgs as f0t0page.DisplayPictureEventArgs; if (e != null) { try { //Image i = e.Image.Image.Clone() as Image; Image i = e.Image.Image; PropertyItem delayTime = i.GetPropertyItem(0x5100); //get frame delay int delay = (delayTime.Value[0] + delayTime.Value[1] * 256) * 10; for (int j = FrameIndex; j <= FrameCount; j++) { j = (j.CompareTo(FrameCount) == 0) ? 0 : j; FrameIndex = j; if (ShowPictureHandler != null) { ShowPictureHandler(new ShowPictureEventArgs(i, FrameIndex, frameDimension, e.Dimensions)); } Thread.Sleep(delay); } } catch { /*ShowFrames(pictureArgs);*/ } } }
/// <summary> /// Show animation within picture arguments /// </summary> /// <param name="pictureArgs"></param> private void ShowAnimation(object pictureArgs) { f0t0page.DisplayPictureEventArgs e = pictureArgs as f0t0page.DisplayPictureEventArgs; if (e != null) { Image i = e.Image.Image; this.Image = i; ImageAnimator.Animate(i, null); } }
/// <summary> /// Shows a given image with specifications /// </summary> /// <param name="e"></param> public void Show(f0t0page.DisplayPictureEventArgs e) { LoadedPicture = e.Image; pictureSize = e.Dimensions; if (LoadedPicture != null) { frameDimension = new FrameDimension(LoadedPicture.Image.FrameDimensionsList[0]); FrameCount = LoadedPicture.Image.GetFrameCount(frameDimension); FrameIndex = 0; if (ImageAnimator.CanAnimate(LoadedPicture.Image)) { #region framecounterMethod... if (frameCounterThread != null && frameCounterThread.IsAlive) { frameCounterThread.Abort(); } ParameterizedThreadStart starter = new ParameterizedThreadStart(ShowFrames); frameCounterThread = new Thread(starter); frameCounterThread.IsBackground = true; frameCounterThread.Start(e); #endregion #region frameupdatemethod... /* * ParameterizedThreadStart starter = new ParameterizedThreadStart(ShowAnimation); * if (frameCounterThread != null && frameCounterThread.IsAlive) * { * frameCounterThread.Abort(); * } * frameCounterThread = new Thread(starter); * frameCounterThread.IsBackground = true; * frameCounterThread.Start(e); */ #endregion //ShowAnimation(e); //e = null; } else { ShowPictureFrame(new ShowPictureEventArgs(LoadedPicture.Image, //FrameIndex, frameDimension, e.Dimensions)); //just display crappy image. FrameIndex, frameDimension, f0t0page.ScaleToFit(e.Dimensions, e.Image.Image))); //scale image properly. } } this.EnableAllContextItems(); }
/// <summary> /// Display a pciture on a given picturebox with the given specifications /// </summary> public void DisplayPics(object sender, f0t0page.DisplayPictureEventArgs e) { Image pix = e.Image.Image; IPictureBox pictureBox = sender as IPictureBox; pictureBox.Image = null; try { //Rectangle rectangle = ScaleToFit( e.Dimensions, pix); pictureBox.Show(e); this.UpdateText(e.Image.Name); if (showTinyImage) { f0t0tab parent = ((f0t0tab)this.Parent); parent.RemoveImage(this.ImageKey); parent.AddImage(e.Image); this.ImageKey = e.Image.Name; } } catch { return; } }