public static void UpdateBrush(UIElement uiElement) { RevealBrushState revealBrushState = RevealBrushHelper.GetState(uiElement); bool isMouseOverRootVisual = RevealBrushHelper.GetIsMouseOverRootVisual(uiElement); if (RevealBrushHelper.GetRevealBrush(uiElement) is Brush brush) { brush.Opacity = (isMouseOverRootVisual && revealBrushState == RevealBrushState.Normal) ? 1.0 : 0.0; } }
public void GoToState(RevealBrushState state) { switch (state) { case RevealBrushState.Normal: _pressed(false); break; case RevealBrushState.PointerOver: break; case RevealBrushState.Pressed: _pressed(true); break; default: break; } }
public static void UpdateBrush(UIElement uiElement) { RevealBrushState revealBrushState = RevealBrushHelper.GetState(uiElement); RevealBrushMode revealBrushMode = RevealBrushHelper.GetRevealBrushMode(uiElement); if (RevealBrushHelper.GetRevealBrush(uiElement) is RadialGradientBrush brush) { if (revealBrushMode == RevealBrushMode.Background) { brush.Opacity = (revealBrushState != RevealBrushState.Normal) ? 0.1 : 0.0; } else if (revealBrushMode == RevealBrushMode.BackgroundPressed) { if (revealBrushState == RevealBrushState.Pressed) { var time = TimeSpan.FromMilliseconds(1500); var easingFunction = new CubicEase() { EasingMode = EasingMode.EaseOut }; var opacityAnimation = new DoubleAnimation(1.0, 0.0, time) { EasingFunction = easingFunction }; brush.BeginAnimation(Brush.OpacityProperty, opacityAnimation); var radiusAnimation = new DoubleAnimation(50.0, 200.0, time) { EasingFunction = easingFunction }; brush.BeginAnimation(RadialGradientBrush.RadiusXProperty, radiusAnimation); brush.BeginAnimation(RadialGradientBrush.RadiusYProperty, radiusAnimation); var gradientStop = brush.GradientStops[1]; var offsetAnimation = new DoubleAnimation(0, 0.8, time) { EasingFunction = easingFunction }; gradientStop.BeginAnimation(GradientStop.OffsetProperty, offsetAnimation); } else { var time = TimeSpan.FromMilliseconds(200); var easingFunction = new CubicEase() { EasingMode = EasingMode.EaseOut }; var opacityAnimation = new DoubleAnimation(0.0, time) { EasingFunction = easingFunction }; brush.BeginAnimation(Brush.OpacityProperty, opacityAnimation); var radiusAnimation = new DoubleAnimation(200.0, time) { EasingFunction = easingFunction }; brush.BeginAnimation(RadialGradientBrush.RadiusXProperty, radiusAnimation); brush.BeginAnimation(RadialGradientBrush.RadiusYProperty, radiusAnimation); } } } }
public static void SetState(DependencyObject target, RevealBrushState value) { target.SetValue(StateProperty, value); }
public static void SetState(DependencyObject obj, RevealBrushState value) { obj.SetValue(StateProperty, value); }