カテゴリ: C# 更新日: 2026/05/26

C# WPFでアニメーションを実装!初心者向けに分かりやすく解説

C#のWPFでアニメーションを実装する方法
C#のWPFでアニメーションを実装する方法

先生と生徒の会話形式で理解しよう

生徒

「C#のWPFでボタンを動かしたり、画像をふわっと表示させたりするアニメーションはどうやるんですか?」

先生

「WPFには、初心者の方でも簡単にアニメーションを作れる仕組みが用意されていますよ。」

生徒

「プログラミング未経験なのですが、難しいコードをたくさん書く必要はありますか?」

先生

「大丈夫です!まずは基本的な仕組みから一緒に見ていきましょう。」

1. WPFにおけるアニメーションとは?

1. WPFにおけるアニメーションとは?
1. WPFにおけるアニメーションとは?

WPFとは、Windows上で動くデスクトップアプリを作るための技術のことです。このWPFでは、画面上のボタンや文字などの見た目を、時間をかけて変化させることをアニメーションと呼びます。例えば、ボタンを横にスライドさせたり、文字の透明度を変えてフェードインさせたりすることができます。アニメーションを使うと、アプリの操作性が格段に上がり、ユーザーにとって使いやすい親切な画面を作ることができます。

2. アニメーションを動かすための仕組み

2. アニメーションを動かすための仕組み
2. アニメーションを動かすための仕組み

WPFのアニメーションは、簡単に言えば「開始時の状態」と「終了時の状態」、そして「どれくらいの時間をかけるか」を決めてあげることで実現します。これを専門的には「ストーリーボード」という機能を使って管理します。ストーリーボードは、映画の絵コンテのようなもので、どのタイミングで何をするかを指定します。プログラミングの初心者でも、この考え方を理解すれば直感的にアニメーションを作成できるようになります。

3. XAMLでアニメーションを定義する

3. XAMLでアニメーションを定義する
3. XAMLでアニメーションを定義する

WPFでは、画面の見た目をXAMLという言語で書きます。XAMLは、ウェブサイトを作るHTMLのようなもので、タグを使って画面の要素を並べていきます。まずはボタンを横に動かす簡単な例を見てみましょう。このコードでは、ボタンの幅を変化させるアニメーションを定義しています。


<Window ...>
    <StackPanel>
        <Button Name="myButton" Content="ここをクリック" Width="100">
            <Button.Triggers>
                <EventTrigger RoutedEvent="Button.Click">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetName="myButton" 
                                             Storyboard.TargetProperty="Width" 
                                             From="100" To="300" Duration="0:0:2" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Button.Triggers>
        </Button>
    </StackPanel>
</Window>

4. プロパティの解説

4. プロパティの解説
4. プロパティの解説

上のコードに出てきた用語を解説します。まず、DoubleAnimationは、数値を変化させるアニメーションのことです。次に、Storyboard.TargetNameは、アニメーションさせる対象の名前です。Storyboard.TargetPropertyは、どの性質を変えるか、つまりここでは横幅(Width)を指定しています。Fromは開始時の値、Toは終了時の値です。Durationは、その変化に何秒かけるかを表しています。0:0:2と書くと、2秒間かけて動くという意味になります。

5. 透明度を変更してふわっと表示させる

5. 透明度を変更してふわっと表示させる
5. 透明度を変更してふわっと表示させる

次は、画像をふわっと表示させるアニメーションに挑戦してみましょう。これは、画像の不透明度(Opacity)を0から1に変えることで実現します。0は完全な透明、1は完全に表示された状態です。これを使えば、画面が表示されたときにロゴがゆっくり現れるような、おしゃれな演出を簡単に作ることができます。


<Image Name="myImage" Source="logo.png" Opacity="0">
    <Image.Triggers>
        <EventTrigger RoutedEvent="Loaded">
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimation Storyboard.TargetName="myImage" 
                                     Storyboard.TargetProperty="Opacity" 
                                     From="0" To="1" Duration="0:0:3" />
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Image.Triggers>
</Image>

6. C#コードから動的にアニメーションを実行する

6. C#コードから動的にアニメーションを実行する
6. C#コードから動的にアニメーションを実行する

先ほどはXAMLだけで書きましたが、ボタンを押したタイミングでC#のコードを使ってアニメーションを開始することもできます。これは、より複雑な条件や、プログラムの動きに合わせてアニメーションを制御したいときに非常に便利です。WPFは、画面の見た目を作るXAMLと、動的な処理を書くC#を分離して開発できるのが大きな特徴です。


private void StartAnimation()
{
    DoubleAnimation anim = new DoubleAnimation();
    anim.From = 0;
    anim.To = 100;
    anim.Duration = TimeSpan.FromSeconds(2);
    myButton.BeginAnimation(Button.WidthProperty, anim);
}

7. イージング関数で滑らかな動きを作る

7. イージング関数で滑らかな動きを作る
7. イージング関数で滑らかな動きを作る

ただ一定の速度で動くだけではなく、動き出しをゆっくりにしたり、最後で少しバウンドさせたりしたい場合は、イージング関数を使います。イージングとは、動きに緩急をつけることです。例えば、BounceEaseというものを使えば、アニメーションの最後にボールが弾むような動きを追加できます。これを使うだけで、アプリの質感が一気に向上します。


<DoubleAnimation Storyboard.TargetName="myButton" 
                 Storyboard.TargetProperty="Width" 
                 From="100" To="300" Duration="0:0:2">
    <DoubleAnimation.EasingFunction>
        <BounceEase Bounciness="3" Bounces="2" EasingMode="EaseOut" />
    </DoubleAnimation.EasingFunction>
</DoubleAnimation>

8. 開発環境を整えて練習しよう

8. 開発環境を整えて練習しよう
8. 開発環境を整えて練習しよう

WPFアプリを作成するためには、マイクロソフトが提供しているVisual Studioというソフトを使います。Visual Studioは、Windows用アプリを開発するためのとても強力なツールです。まずは無料版のCommunityエディションをインストールしてみましょう。練習として、まずはボタンの色を変えたり、位置をずらしたりする簡単なアニメーションから始めることをおすすめします。失敗しても大丈夫ですから、どんどんコードを書いてみて、自分のアプリが動く楽しさを体験してください。

カテゴリの一覧へ
新着記事
New1
COBOL
COBOLのEVALUATE文の使い方を完全ガイド!初心者でもわかる多岐選択
New2
C#
C#の拡張メソッドとは?既存クラスに機能を追加する便利技
New3
C#
ASP.NET CoreとC#の例外処理ベストプラクティス!エラーハンドリングの基本と実装方法
New4
Azure
Azure WAFとは?SQLインジェクションやXSSからWebサイトを守る初心者ガイド
人気記事
No.1
Java&Spring記事人気No1
C#
C#のstaticクラスとstaticメソッドの基本と使い方をやさしく解説!
No.2
Java&Spring記事人気No2
C#
C#のWPFとは?XAMLでGUI開発を基礎から完全解説!初心者向けの入門ガイド
No.3
Java&Spring記事人気No3
C#
C# WinForms入門!初心者でも簡単にWindowsアプリを作る方法
No.4
Java&Spring記事人気No4
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.5
Java&Spring記事人気No5
COBOL
COBOLのファイルステータス(FILE STATUS)の使い方を完全ガイド!初心者でもわかるエラー処理の基本
No.6
Java&Spring記事人気No6
C#
C#のイベント処理を完全攻略!WinFormsとWPFの基本を解説
No.7
Java&Spring記事人気No7
C#
C#のbool型を完全解説!初心者でもわかるtrueとfalseの基本と使い方
No.8
Java&Spring記事人気No8
C#
C#でファイルパス操作の便利なテクニック!Pathクラスの使い方をわかりやすく解説