ポップアップメニューから各種コントロールを表示する
マイク、ピクチャライブラリ、Webカメラへのアクセス許可の設定
今回のサンプルは、ピクチャライブラリにアクセスしますので、「画像ライブラリ」へのアクセス許可が必要になります。ソリューションエクスプローラー内にpackage.appxmanifestというファイルがありますので、このファイルをダブルクリックします。「機能」タブをクリックして、表示される画面の「機能:」にある、「マイク」、「画像ライブラリ」、「Webカメラ」にチェックを付けます(図3)。
次に、ソリューションエクスプローラー内のMainWindow.xamlを展開して表示される、MainWindow.xaml.vbをダブルクリックしてリスト2のコードを記述します。
ロジックコードを記述する
リスト2 (MainWindow.xaml.vb)
Option Strict On
PopupMenuであるコンテキストメニューを表示させるのに必要なクラスの含まれる、Windows.UI.Popups名前空間をインポートします。
Imports Windows.UI.Popups
写真、オーディオの録音とビデオのキャプチャを提供するクラスの含まれる、Windows.Media.Capture名前空間をインポートします。
Imports Windows.Media.Capture
ファイル、フォルダー、およびアプリケーションの設定を管理するクラスの含まれる、Windows.Storage名前空間をインポートします。
Imports Windows.Storage Public NotInheritable Class MainPage Inherits Page
写真、オーディオの録音やビデオをキャプチャするMediaCaptureクラス型のメンバ変数、myMediaCaptureを宣言します。
Dim myMediaCapture As MediaCapture
インデックスでアクセスできる読み取り専用のファイルのコレクションを表すインターフェースである、IReadOnlyList(Of IStorageFile)型のメンバ変数、myPictureFilesを宣言します。
Dim myPictureFiles As IReadOnlyList(Of IStorageFile)
LayoutRootという名前のGrid上にポインターがあった時、右タップの入力刺激があった時の処理
2次元空間でのXとY座標のペアを表すPoint構造体を、右タップされた時点のXとY座標で初期化します。-540は位置合わせのための数値です。
LayoutRootの描画時の幅と高さで初期化された、新しいSizeのインスタンスmySizeオブジェクトを作成します。Size構造体はオブジェクトの幅と高さを表します。
四角形の幅、高さ、および原点を表すRect構造体を、Point構造体のオブジェクトmyPointと、Size構造体のオブジェクトmySizeで初期化した、新しいRectのインスタンス、myRectオブジェクトを作成します。
ポップアップメニューを表すPopupMenuクラスのインスタンス、myPopupオブジェクトを作成します。
Command.Addメソッドで、PopupMenuに項目名と、その項目をタップした際のコマンドを追加します。UICommandクラスは、コンテキストメニュー内のコマンドを表します。PopupMenuに「Webカメラ」、「画像一覧」、「全クリア」の項目を追加し、それらに対するコマンドを追加します。
ShowForSelectionAsyncメソッドで、指定された選択項目を基準とする適切な位置に、コンテキストメニューを表示します。この場合はLayoutRoot内で右タップがされた位置の左側(Placement.Left)にコンテキストメニューが表示されます。Placement列挙体については、下記のURLを参考にしてください。
→ Placement enumeration (Windows)
非同期処理で行われるため、メソッドの先頭にAsyncを追加します。Asyncが追加されていると、その処理が非同期で行われることを意味します。
Private Async Sub LayoutRoot_RightTapped(sender As Object, e As RightTappedRoutedEventArgs) Handles LayoutRoot.RightTapped Dim myPoint As Point = New Point(e.GetPosition(LayoutRoot).X, e.GetPosition(LayoutRoot).Y - 540) Dim mySize As New Size(LayoutRoot.ActualWidth, LayoutRoot.ActualHeight) Dim myRect As New Rect(myPoint, mySize) Dim myPopup As New PopupMenu myPopup.Commands.Add(New UICommand("Web カメラ", Sub(command) ShowWebCamera() End Sub)) myPopup.Commands.Add(New UICommand("画像一覧", Sub(command) ShowImage() End Sub)) myPopup.Commands.Add(New UICommand("全クリア", Sub(command) AllClear() End Sub)) Await myPopup.ShowForSelectionAsync(myRect, Placement.Left) End Sub
ポップアップメニューから各種コントロールを表示するWindows8アプリ
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Webカメラで撮影した写真をセピア調に演出するアプリを作る
- PCで撮影した写真を並べて最適な1枚を選べるプログラムをつくる
- 撮影した写真の管理ができるマイフォトアプリを作る
- 場所と写真を記録するプログラムを作って思い出のシーンを保存しよう
- CountDownControlを使ってカウントダウン後にカメラのシャッターを切る
- Webカメラを使ったアプリを作ろう
- 写真と現在位置を入れた画像日記アプリを作る
- ListBoxに表示された画像をポップアップメニューから削除する+1つのサンプル
- 画像の一覧表示と、ListBoxに表示されたYoutubeの再生を試す
- ピクチャライブラリ内の画像を指定して表示する+1つのサンプル