/// <summary> /// Method to handle property changed event of FrameIndex property. /// </summary> /// <param name="obj">Source image.</param> /// <param name="ev">Event arguments.</param> protected static void ChangingFrameIndex(DependencyObject obj, DependencyPropertyChangedEventArgs ev) { GifImage ob = obj as GifImage; ob.Source = ob.gf.Frames[ob.FrameIndex]; ob.InvalidateVisual(); }
/// <summary> /// Method to handle property changed event of AnimationSourcePath property. /// </summary> /// <param name="obj">Source image.</param> /// <param name="ev">Event arguments.</param> protected static void AnimationSourcePathPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs ev) { GifImage ob = obj as GifImage; ob.BeginAnimation(GifImage.FrameIndexProperty, null); ob.anim = null; ob.gf = null; ob.Source = null; if (!String.IsNullOrEmpty(ob.AnimationSourcePath) && Uri.IsWellFormedUriString(ob.AnimationSourcePath, UriKind.RelativeOrAbsolute)) { if (((string)ob.AnimationSourcePath).ToLower().EndsWith(".gif")) { Uri uri = new Uri(ob.AnimationSourcePath); GifImage.SetupAnimationSource(ob, uri); ob.BeginAnimation(GifImage.FrameIndexProperty, ob.anim); } else { ob.Source = (new ImageSourceConverter()).ConvertFromString(ob.AnimationSourcePath) as ImageSource; ob.InvalidateVisual(); } ob.animationIsWorking = true; } }