状態の作成

状態を作成します。「オブジェクトとタイムライン(B)」内のImage1を選択します。

黄色の再生ヘッドが「0」の位置で、プロパティの[外観]内にあるOpacityの値に100を指定します。自動的に100%となりImageの透明化が解除されます(図10)。

図10:再生ヘッドが「0」の位置で、Opacityの値を100%とする(クリックで拡大)

次に、「切り替え効果の追加」をクリックします(図11)。

図11:「切り替え効果の追加」を選択する

表示される項目から、「★→SlideIn」を選択します(図12)。

図12:「★→SlideIn」を選択する

fxアイコンをクリックするとTransitionEffectの一覧が表示されますので、「Slide In」を選択します。時間は1秒を指定します。表示されるSlideDirectionプロパティはデフォルトのLeftToRightのままにしておきます。左から右に向かってスライドします(図13)。

図13:TransitionEffectの一覧から「Slide In」を選択し、時間に1秒を指定する

ここで、図12の「●SlideIn状態記録オン」の●をクリックして、記録オフにします。

図7~図13の手順で、もうひとつ、SlideIn2という状態を追加します。タイムラインへの追加もSlideInの時と全く同じです。「状態(S)」の中にSlideInとSlideIn2という2つの状態が追加されることになります(図14)。

図14:SlideInとSlideIn2という2つの状態が追加された

TransitionEffectの設定は以上で終わりです。Blend4を終了しVS2010に戻ります。

TransitionEffectListBoxユーザーコントロール内にTransitionEffectImageShowユーザーコントロールを取り込む

TransitionEffectListBox.xamlの要素内に、localという名前空間を定義します(図4参照)。名前空間を定義した後、要素を記述している下に

図15:TransitionEffectListBox.xaml 内にTransitionEffectImageShow .xamlを取り込む

Widthに640、Heightに480を指定し、x:NameにImageShowAreaと指定します。適当な位置に配置してください。このサンプルでは下記のようなコードになります。

<local:TransitionEffectImageShow x:Name="ImageShowArea" Width="640" Height="480" Margin="248,12,12,108" />(図16)

図16:ListBoxコントロールの横にTransitionEffectImageShowユーザーコントロールを配置した(クリックで拡大)

これまでのサンプルでは、Blend4の中から、GotoStateActionアクションを使用してトリガーを指定していましたが、今回のListBoxのSelectionChangedイベントをGotoStateActionに設定してもTransitionEffectが機能しませんので、今回はGotoStateActionをプログラムコードの中から呼び出します(リスト4)。

ロジックコードを記述する

リスト4(TransitionEffectListBox.xaml.vb)

Option Strict On
Imports System.Xml.Linq

ImageコントロールのSourceプロパティに画像を指定する際に必要なクラスの含まれる、System.Windows.Media.Imaging名前空間をインポートします。
Imports System.Windows.Media.Imaging

~ImageInfoクラスの定義略(リスト3参照)~

	Dim xmldoc As XElement

~TransitionEffectListBoxユーザーコントロールが読み込まれた時の処理略(リスト3参照)~

■ListBoxコントロールから画像が選択された時の処理
ImageShowAreaに適用されているVisualState(特定の状態でのコントロールの外観を表すクラス)が存在し、かつ、VisualStateの名前がSlideIn2である場合は、VisualStateManager.GotoStateメソッドでSlideInの VisualStateを実行します。それ以外の場合は、SlideIn2を実行します。VisualStateManager.GotoStateメソッドの書式は下記の通りです。
VisualStateManager.GotoState(状態を遷移させるコントロール,状態名,VisualTransitionを使うかどうかのBoolean値(使用する場合はTrue、それ以外はFalse)
ListBoxのインデックスに該当する<画像名>要素の内容を取得し、変数selectImageに格納します。
Image1コントロールのSourceプロパティに、画像を格納しているImage/フォルダを連結したselectImage変数を指定します。相対Uriで指定します。これで、ListBoxから選択された画像が、左から右に向かってスライドしながら表示されます。
  Private Sub ListBox1_SelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs) Handles ListBox1.SelectionChanged
  	If ImageShowArea.VisualStateGroup.CurrentState Is Nothing = False AndAlso ImageShowArea.VisualStateGroup.CurrentState.Name.ToString = "SlideIn2" Then
  		VisualStateManager.GoToState(ImageShowArea, "SlideIn", True)
  	Else
  		VisualStateManager.GoToState(ImageShowArea, "SlideIn2", True)
  	End If
  	Dim selectImage = xmldoc.Descendants("画像名")(ListBox1.SelectedIndex).Value
  	ImageShowArea.Image1.Source = New BitmapImage(New Uri("Image/" & selectImage, UriKind.Relative))
  End Sub
~コード略~

人気記事トップ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