private void ButtonRippleEffectAction() { _rippleStatus = RippleStatus.Request; _rippleValue = 0; _rippleStartValue = 0; _rippleTargetValue = Width * 2; _threadRipple = new Thread(RippleEffectUpdate) { IsBackground = true, Name = "Ripple Effect" }; _threadRipple.Start(); }
private void RippleEffectUpdate() { while (_rippleStatus != RippleStatus.Completed) { _rippleStatus = RippleStatus.Active; if (_rippleValue <= _rippleTargetValue) { _rippleValue += Step(); } else { _rippleValue = 0; _rippleStatus = RippleStatus.Completed; } double timeMs = 1000.0 / rippleAnimationFPS; Thread.Sleep(Convert.ToInt32(timeMs)); Invalidate(); } }