예제 #1
0
        private void ButtonRippleEffectAction()
        {
            _rippleStatus      = RippleStatus.Request;
            _rippleValue       = 0;
            _rippleStartValue  = 0;
            _rippleTargetValue = Width * 2;

            _threadRipple = new Thread(RippleEffectUpdate)
            {
                IsBackground = true,
                Name         = "Ripple Effect"
            };
            _threadRipple.Start();
        }
예제 #2
0
        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();
            }
        }