private void NewParticlesImage(IAdornmentLayer adornmentLayer, IWpfTextView view) { var particles = new Image(); particles.UpdateSource(GetParticlesImage()); adornmentLayer.AddAdornment(AdornmentPositioningBehavior.ViewportRelative, null, null, particles, null); particlesList.Add(particles); try { var top = view.Caret.Top; var left = view.Caret.Left; particles.BeginAnimation(Canvas.TopProperty, GetParticlesTopAnimation(top)); particles.BeginAnimation(Canvas.LeftProperty, GetParticlesLeftAnimation(left)); var opacityAnimation = GetParticlesOpacityAnimation(); opacityAnimation.Completed += (sender, e) => { particles.Visibility = Visibility.Hidden; adornmentLayer.RemoveAdornment(particles); particlesList.Remove(particles); }; particles.BeginAnimation(UIElement.OpacityProperty, opacityAnimation); } catch { adornmentLayer.RemoveAdornment(particles); particlesList.Remove(particles); } }
private void NewParticleImage(IAdornmentLayer adornmentLayer, IWpfTextView view, bool isPartyMode) { try { var particles = new Image(); particles.UpdateSource(GetParticleImage()); adornmentLayer.AddAdornment(AdornmentPositioningBehavior.ViewportRelative, null, null, particles, null); particlesList.Add(particles); try { var top = isPartyMode ? RandomUtils.Random.Next((int)view.ViewportTop, (int)view.ViewportBottom) : view.Caret.Top; var left = isPartyMode ? RandomUtils.Random.Next((int)view.ViewportLeft, (int)view.ViewportRight) : view.Caret.Left; particles.BeginAnimation(Canvas.TopProperty, GetParticleTopAnimation(top)); particles.BeginAnimation(Canvas.LeftProperty, GetParticleLeftAnimation(left)); var opacityAnimation = GetParticleOpacityAnimation(); opacityAnimation.Completed += (sender, e) => { particles.Visibility = Visibility.Hidden; adornmentLayer.RemoveAdornment(particles); particlesList.Remove(particles); }; particles.BeginAnimation(UIElement.OpacityProperty, opacityAnimation); } catch { adornmentLayer.RemoveAdornment(particles); particlesList.Remove(particles); } } catch { } }