1

画像のスケーリングを制御するために、XAML ではなく C# でストーリーボードを作成しようとしているので、ScaleTransform.ScaleXとのScaleTransform.ScaleY値を簡単に変更できますDoubleAnimation

これまでのところ、アニメーションを作成して新しいストーリーボードに追加したと思います。ブレークポイントでチェックすると、C# で適切な値が変更されますが、実際には機能していません。

私のC#は次のようになります:

    public void SetStatistics(double[] value)
    {
        Storyboard sb = new Storyboard();
        sb.Duration = new Duration(TimeSpan.FromSeconds(1));

        //Wedge Animation X-Axis    
        DoubleAnimation wax = new DoubleAnimation();
        //Wedge Animation Y-Axis  
        DoubleAnimation way = new DoubleAnimation();

        ScaleTransform st = ((ScaleTransform)FindName("wedge1scale"));

        wax = new DoubleAnimation();
        way = new DoubleAnimation();
        wax.Duration = sb.Duration;
        way.Duration = sb.Duration;

        sb.Children.Add(wax);
        sb.Children.Add(way);

        Storyboard.SetTargetProperty(wax, new PropertyPath("(ScaleTransform.ScaleX)"));

        //End scale from calculation with an Enum value
        wax.To = StatMin + (StatPercent * value[1]);
        //Start scale from current value
        wax.From = st.ScaleX;

        Storyboard.SetTargetProperty(way, new PropertyPath("(ScaleTransform.ScaleY)"));

        //End scale from calculation with an Enum value
        way.To = StatMin + (StatPercent * value[1]);
        //Start scale from current value
        way.From = st.ScaleY;

        Storyboard.SetTarget(wax, Wedge1);
        Storyboard.SetTarget(way, Wedge1);

        Main.Resources.Add("animation", sb);

        sb.Begin();
    }

私のXAMLイメージは次のようなものです:

    <Image x:Name="Wedge1" Source="Images/Wedge.png" RenderTransformOrigin="-0.008,1.027" Height="682" Width="263" Canvas.Left="869.04" Canvas.Top="-158.251" >

        <Image.RenderTransform>
              <TransformGroup>
                    <ScaleTransform x:Name="wedge1scale" ScaleX="0.555" ScaleY="0.555"/>
                    <TranslateTransform X="88.102" Y="-4.381"/>
              </TransformGroup>
        </Image.RenderTransform>
    </Image>

事前に情報をありがとう:)

4

1 に答える 1