ExtendedLibrary for WPF/Silverlight
Rating コントロールのためアニメーションのカスタマイズ
Rating (WPF のみ) > 機能 > Rating コントロールのためアニメーションのカスタマイズ

Rating for WPF は、IAnimationFactory クラスのプロパティとメソッドを継承して、アニメーション効果をカスタマイズするオプションを提供します。デフォルトのアニメーション効果コレクションを利用できるほか、Rating コントロールに適用するアニメーション効果をカスタマイズすることができます。

コードの場合

  1. XAML の操作ロジックに次のコードを追加して、CustomAnimationFlickerFactory クラスのインスタンスを作成します。
    C#
    コードのコピー
    private IAnimationFactory customAnimationFlickerFactory = new CustomAnimationFlickerFactory();
    
    public MainWindow()
    {
        InitializeComponent();
        c1Rating.AnimationFactory = customAnimationFlickerFactory;
    }
    

  2. 次のコードを CustomAnimationFlickerFactory.cs ファイルに追加して、IAnimationFactory クラスをオーバーライドします。
    C#
    コードのコピー
    using C1.WPF.Extended;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Media.Media3D;
    
    namespace Rating_WPF_Animation
    {
        class CustomAnimationFlickerFactory : IAnimationFactory
        {
            public Storyboard GetForwardAnimation(FrameworkElement target, AnimationType animationType)
            {
                return GetFadeAnimation(target, true);
            }
            public Storyboard GetBackwardAnimation(FrameworkElement target, AnimationType animationType)
            {
                return GetFadeAnimation(target, false);
            }
            private Storyboard GetFadeAnimation(FrameworkElement target, bool forward)
            {
                RotateTransform st = new RotateTransform();
                st.Angle = 360;
                Point p = new Point(0.5, 0.5);
                target.RenderTransformOrigin = p;
                target.RenderTransform = st;
                Storyboard sb = new Storyboard();
                var duration = TimeSpan.FromSeconds(0.25);
                EasingFunctionBase easing = new ElasticEase()
                {
                    EasingMode = EasingMode.EaseInOut,
                    Oscillations = 20,
                    Springiness = 5
                };
                DoubleAnimation da1 = new DoubleAnimation();
                DoubleAnimation da2 = new DoubleAnimation();
    
                if (forward)
                {
                    da1.From = 1.0;
                    da1.To = 0.0;
                    da2.To = 1.0;
                }
                else
                {
                    da1.From = 0.0;
                    da1.To = 1.0;
                }
                da1.Duration = duration;
                da2.Duration = duration;
    
                da1.EasingFunction = easing;
                da2.EasingFunction = easing;
    
                sb.Children.Add(da1);
                sb.Children.Add(da2);
    
                Storyboard.SetTargetProperty(da2, new PropertyPath("RenderTransform.Angle"));
                Storyboard.SetTargetProperty(da1, new PropertyPath("Opacity"));
                return sb;
            }
        }
    }
    

  3. [F5]キーを押してアプリケーションを実行し、カスタマイズしたちらつき効果が Rating コントロールに適用されたことに注目してください。