none
起動と同時にアニメーションを実現したい RRS feed

  • 質問

  • お世話になります。

    WPFで「ボタンを押してアニメーションを実現したい」は他の方が質問しておりますが、
    ボタンを使わず(起動と同時に)アニメーションを実現したいのです。

    ボタンを押して実行は次のとおり作りました。

    どうぞよろしくお願い致します。

    <Window x:Class="MainWindow" 
        WindowStyle="None" Topmost="True" 
        AllowsTransparency="True" 
        Background="Transparent" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        Title="MainWindow" Height="1200" Width="1920">
    
        <Window.Resources>
            <Storyboard x:Key="rectAnimation">
                <DoubleAnimation
                    Storyboard.TargetName="rect"
                    Storyboard.TargetProperty="(Canvas.Left)"
                    RepeatBehavior="Forever"
                    AutoReverse="true"
                    From="0" To="1390" Duration="0:0:5">
                </DoubleAnimation>
            </Storyboard>
        </Window.Resources>
    
        <Canvas>
            <Button Canvas.Top="0" Canvas.Left="0" Content="Animation start"  >
    
                <Button.Triggers>
                    <EventTrigger RoutedEvent="Button.Click">
                        <BeginStoryboard Storyboard="{StaticResource rectAnimation}" />
                    </EventTrigger>
                </Button.Triggers>
            </Button>
    
            <Rectangle
                x:Name="rect"
                Width="50" Height="50" Fill="Red"/>
        </Canvas>
    </Window> 


    2018年3月2日 3:35

回答

  • 特に問題があるわけではないですが、Rectangleが自発的に行うアニメーションなんで、RectangleのTriggersに、Rectangle自身のLoadedでやらせた方が自然ではないでしょうかね。

    なお、EventTrigger.RoutedEventは、イベント名のみ記述するのが一般的です。Canvas.Loadedと書いてもCanvasのLoadedイベントに反応するわけではありませんし(自分自身、takadonさんのコードで言えばButtonオブジェクト、のLoadedイベントに反応します)。

    • 回答としてマーク takadon 2018年3月8日 12:25
    2018年3月2日 4:26
  • takadon さん、こんにちは。フォーラム オペレーターの立花です。
    MSDN フォーラムにご投稿くださいましてありがとうございます。

    Hongliang さんからのご返信はお役に立ちましたでしょうか。
    今後同じ問題で閲覧した方のためにも、参考となった返信には、
    [回答としてマーク] のご設定くださいませ。

    ご協力の程、どうかよろしくお願いいたします。


    参考になった投稿には回答としてマークの設定にご協力ください
    MSDN/TechNet Community Support 立花楓

    • 回答としてマーク takadon 2018年3月8日 12:25
    2018年3月5日 1:42
    モデレータ

すべての返信

  • Clickの代わりにLoadedを使っては?
    2018年3月2日 3:39
  • 解決致しました。ありがとうございました。

    <Window x:Class="MainWindow" 
        WindowStyle="None" Topmost="True" 
        AllowsTransparency="True" 
        Background="Transparent" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        Title="MainWindow" Height="1200" Width="1920">
    
        <Window.Resources>
            <Storyboard x:Key="rectAnimation">
                <DoubleAnimation
                    Storyboard.TargetName="rect"
                    Storyboard.TargetProperty="(Canvas.Left)"
                    RepeatBehavior="Forever"
                    AutoReverse="true"
                    From="0" To="1390" Duration="0:0:5">
                </DoubleAnimation>
            </Storyboard>
        </Window.Resources>
    
        <Canvas>
            <Button Canvas.Top="0" Canvas.Left="0" Content="Animation start"  >
    
                <Button.Triggers>
                    <EventTrigger RoutedEvent="Canvas.Loaded">
                        <BeginStoryboard Storyboard="{StaticResource rectAnimation}" />
                    </EventTrigger>
                </Button.Triggers>
            </Button>
    
            <Rectangle
                x:Name="rect"
                Width="50" Height="50" Fill="Red"/>
        </Canvas>
    </Window> 

    2018年3月2日 4:14
  • 特に問題があるわけではないですが、Rectangleが自発的に行うアニメーションなんで、RectangleのTriggersに、Rectangle自身のLoadedでやらせた方が自然ではないでしょうかね。

    なお、EventTrigger.RoutedEventは、イベント名のみ記述するのが一般的です。Canvas.Loadedと書いてもCanvasのLoadedイベントに反応するわけではありませんし(自分自身、takadonさんのコードで言えばButtonオブジェクト、のLoadedイベントに反応します)。

    • 回答としてマーク takadon 2018年3月8日 12:25
    2018年3月2日 4:26
  • WPFは最近始めたばかりで、今は理解出来ませんが、今後勉強してまいます
    ありがとうございました。
    2018年3月2日 7:29
  • takadon さん、こんにちは。フォーラム オペレーターの立花です。
    MSDN フォーラムにご投稿くださいましてありがとうございます。

    Hongliang さんからのご返信はお役に立ちましたでしょうか。
    今後同じ問題で閲覧した方のためにも、参考となった返信には、
    [回答としてマーク] のご設定くださいませ。

    ご協力の程、どうかよろしくお願いいたします。


    参考になった投稿には回答としてマークの設定にご協力ください
    MSDN/TechNet Community Support 立花楓

    • 回答としてマーク takadon 2018年3月8日 12:25
    2018年3月5日 1:42
    モデレータ