プログラムコードの追加

プログラムコードの追加

まず、新たに名前空間を追加します(リスト5)

リスト5 名前空間の追加

Storybordを使用可能にするクラスの含まれるWindows.UI.Xaml.Media.Animation名前空間をインポートする
Imports Windows.UI.Xaml.Media.Animation

次に、メンバー変数を宣言します(リスト6)

リスト6 メンバー変数の宣言

Storyboardクラス型の新しいインスタンスmyStoryBoardオブジェクトを宣言する
Private myStoryBoard As New Storyboard

GridViewの画像が選択された時の処理を記述します(リスト7)

Image1のSourceプロパティにGridViewから選択された項目をImageInfoクラス型にキャストして、その「画像名」プロパティを指定しておく。これで、Image1にはGridViewから選択した画像が表示される。ResourcesでXAML内に記述したStoryboardを指定して、myStorybordオブジェクトで参照して、Beginメソッドでストーリーボードを実行する。すると選択した画像が回転して近づきながら大きくなり、大きくなった時点で一瞬止まり、その後小さくなって消えていく。

リスト7 GridViewの画像が選択された時にアニメーションを実行する処理

Private Sub GridView1_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles GridView1.SelectionChanged
        Image1.Source = New BitmapImage(New Uri(DirectCast(GridView1.SelectedItem, ImageInfo).画像名))
        myStoryBoard = DirectCast(Me.Resources("Storyboard1"), Storyboard)
        myStoryBoard.Begin()
    End Sub

全てのコードをまとめるとリスト8のようになります。

リスト8 全コード

Imports Windows.UI.Xaml.Media.Animation
Public Class ImageInfo
    Public Property 画像名 As String
End Class
Public NotInheritable Class MainPage
    Inherits Page
    Private myStoryBoard As New Storyboard
    Protected Overrides Sub OnNavigatedTo(e As NavigationEventArgs)
        Dim xmldoc As XElement = XElement.Load("winter.xml")
        Dim myImageInfo As New List(Of ImageInfo)
        For Each result In From c In xmldoc.Descendants("画像名") Select c
            myImageInfo.Add(New ImageInfo With {.画像名 = "ms-appx:///Images/" & result.Value})
        Next
        GridView1.ItemsSource = myImageInfo
        MyBase.OnNavigatedTo(e)
    End Sub

    Private Sub GridView1_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles GridView1.SelectionChanged
        Image1.Source = New BitmapImage(New Uri(DirectCast(GridView1.SelectedItem, ImageInfo).画像名))
        myStoryBoard = DirectCast(Me.Resources("Storyboard1"), Storyboard)
        myStoryBoard.Begin()
    End Sub
End Class

これでも、わずか23行のコードです。XAMLコードを含めると長くはなりますが、VBコードだけでは23行でこのような処理が実現できます。VS2013は素晴らしい開発環境だと言えるでしょう。

リスト8を実行すると図12のように表示されます。

図12 選択した画像がアニメーションを伴って表示されている
図12 選択した画像がアニメーションを伴って表示されている

今回はこれで終わりです。Blendと組み合わせるといとも簡単にアニメーションが作れてアプリの表現力も広がります。ひぜ一度Blendを使って試してください。Blendで作成したストーリーボードは、今回のサンプルのように、VS2013からも操作できます。一度やり方さえわかってしまえば、同じ処理を書くだけでいいので簡単です。BlendとVS2013を絡ませたWindows アプリにも挑戦していただきたいです。

次回は、音声認識を使ったアプリの作成方法を紹介します。お楽しみに。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30