public void DrawAnimation(Graphics graphics) { if (_effectsManager.IsAnimating() && _animation) { graphics.SmoothingMode = SmoothingMode.AntiAlias; for (var i = 0; i < _effectsManager.GetAnimationCount(); i++) { double animationValue = _effectsManager.GetProgress(i); Point animationSource = _effectsManager.GetSource(i); using (Brush rippleBrush = new SolidBrush(Color.FromArgb((int)(101 - (animationValue * 100)), Color.Black))) { var rippleSize = (int)(animationValue * Width * 2); graphics.SetClip(ControlGraphicsPath); graphics.FillEllipse(rippleBrush, new Rectangle(animationSource.X - (rippleSize / 2), animationSource.Y - (rippleSize / 2), rippleSize, rippleSize)); } } graphics.SmoothingMode = SmoothingMode.None; } }