選択した画像を拡大表示してアニメーションさせる+1つのサンプル

次に、ソリューションエクスプローラー内のMainWindow.xamlを展開して表示される、MainWindow.xaml.vbをダブルクリックしてリスト3のコードを記述します。
ロジックコードを記述する
リスト3 (MainWindow.xaml.vb)
Option Strict On
UIを提供するクラスの含まれる、Windows.UI名前空間を読み込みます。文字の色を指定する場合等に必要です。
Imports Windows.UI
ImageInfoクラス内で文字列型の「画像名」、「説明」プロパティを定義しています。
Public Class ImageInfo Property 画像名 As String Property 説明 As String End Class Public NotInheritable Class MainPage Inherits Page
XML要素を表す、XElementクラス型のメンバ変数xmldocを宣言します。
Dim xmldoc As XElement
ページがアクティブになった時の処理
XElement.LoadメソッドでXML文書ファイル(photo_etc.xml)を読み込みます。
ImageInfoクラス型の新しいリストであるmyImageInfoオブジェクトを作成します。
Descendantsメソッドで全ての要素のコレクションに対して、要素を変数resultに格納しながら、反復処理を行います。
ImageInfoクラスの「画像名」プロパティに、画像を配置している”ms-appx:///Images/”フォルダを連結した要素の内容テキストを指定します。「説明」プロパティには要素の内容テキストを指定します。
各プロパティの設定されたImageInfoクラスをAddメソッドで、myImageInfoオブジェクトに追加していきます。
ListBoxのItemsSourceプロパティにmyImageInfoオブジェクトを指定します。これで、ListBox内に画像の一覧が表示されます。
Protected Overrides Sub OnNavigatedTo(e As Navigation.NavigationEventArgs)
xmldoc = XElement.Load("photo_etc.xml")
Dim myImageInfo As New List(Of ImageInfo)
For Each result In From c In xmldoc.Descendants("情報") Select c
With myImageInfo
.Add(New ImageInfo With {.画像名 = "ms-appx:///Images/" &result.Element("画像名").Value, .説明 = result.Element("説明").Value})
End With
Next
ListBox1.ItemsSource = myImageInfo
End Sub
リストボックスから任意の画像が選択された時の処理
ListBoxから選択された画像の「画像名」プロパティを取得して、変数myImageに格納します。同じく「説明」プロパティを取得して変数myExplainに格納しておきます。
Imageの新しいインスタンスである、_myImageオブジェクトを作成します。
WidthとHeightプロパティの値を指定し、Sourceプロパティに変数myImageで初期化されたUriを指定します。
TextBlockの新しいインスタンスmyTextBlockオブジェクトを作成します。
WidthとHeightプロパティを設定し、文字の回り込みを設定するTextWrappingプロパティにWrapを指定します。文字色(Foreground)にはGoldを指定します。
Textプロパティには、変数myExplainの値を指定します。
文字の水平方向の配置を示すTextAlignmentプロパティにはLeftを指定し、左詰めとします。
StackPanelの新しいインスタンスmyStackPanelオブジェクトを作成します。
AddメソッドでmyStackPanelオブジェクトに、_myImageとmyTextBlockオブジェクトを追加します。
画像の下に文字(説明文)が表示されます。
AnimationContainer1の回転する内容を表すRotaingContentにmyStackPaneオブジェクトを指定します。
持続時間を指定するDurationに4秒と指定します。
画像の最大拡大率を指定するPulseScaleに10.0と指定します。
Y軸の回転の半径をRadiusYに50.0、X軸の回転の半径を表すRadiusXに100を指定しています。
AnimationContainerの各プロパティの説明に対しての情報が、現時点ではどこにも掲載されていませんので、各自が各プロパティの値を変更して、どのような動作になるかを確認して、お試しください。
Private Sub ListBox1_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles ListBox1.SelectionChanged
Dim myImage = DirectCast(ListBox1.SelectedItem, ImageInfo).画像名
Dim myExplain = DirectCast(ListBox1.SelectedItem, ImageInfo).説明
Dim _myImage As New Image
With _myImage
.Width = 320
.Height = 240
.Source = New BitmapImage(New Uri(myImage, UriKind.Absolute))
End With
Dim myTextBlock As New TextBlock
With myTextBlock
.Width = 350
.Height = 240
.TextWrapping = TextWrapping.Wrap
.Foreground = New SolidColorBrush(Colors.Gold)
.Text = myExplain
.TextAlignment = TextAlignment.Left
End With
Dim myStackPanel As New StackPanel
With myStackPanel
.Children.Add(_myImage)
.Children.Add(myTextBlock)
End With
With AnimationContainer1
.RotatingContent = myStackPanel
.Duration = "0:0:4"
.PulseScale = 10.0
.RadiusY = 50.0
.RadiusX = 100
End With
End Sub
End Class
1つ目のサンプルは以上で終わりです。次ページでは2つ目のサンプルを紹介します。
選択した画像を拡大表示してアニメーションさせるアプリサンプル
時計の秒針のような動きを実装するアプリサンプル


