連載 :
実践!Kinect基本プログラミングKinectButtonを動的に作成して、ジェスチャーで文字を表示させるサンプル
2012年8月9日(木)
次に、ソリューションエクスプローラー内のMainWindow.xamlを展開して表示される、MainWindow.xaml.vbをダブルクリックしてリスト2のコードを記述します。
ロジックコードを記述する
リスト2 (MainWindow.xaml.vb)
Option Strict On
KinectButtonを操作する機能の含まれる、Beginning.Kinect.Framework.ControlsとBeginning.Kinect.Framework.Input名前空間をインポートしておきます。
Imports Beginning.Kinect.Framework.Controls Imports Beginning.Kinect.Framework.Input Imports Microsoft.Kinect Class MainWindow Dim myKinect As KinectSensor
ウィンドウが読み込まれた時の処理
Kinect センサーが接続されていない場合は、警告を発して処理を抜けます。そうでない場合は、Kinect センサーを取得し、RGBカメラの機能を有効にして、StartメソッドでKinect センサーを動作します。
Private Sub MainWindow_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded If KinectSensor.KinectSensors.Count = 0 Then MessageBox.Show("KINECTが接続されておりません。") Exit Sub Else myKinect = KinectSensor.KinectSensors(0) myKinect.ColorStream.Enable() myKinect.Start() End If End Sub
KinectButton上にマウスカーソル(この場合赤い円)が乗った場合の処理
表示される赤い円はKinectButtonに用意されているもので、ユーザが記述して作成するものではありません。
SenderオブジェクトからDirectCastメソッドでKinectButtonにキャストします。KinectButtonの背景色を青色に変化します。KinectButtonの表面にあるボタンの文字(Content.ToString)で条件分岐を行います。TextBlockに選択されたKinectButtonのContentプロパティの値を表示します。
Private Sub Button_Click(sender As Object, e As RoutedEventArgs) Dim myButton As KinectButton = DirectCast(sender, KinectButton) myButton.Background = New SolidColorBrush(Colors.Blue) Select Case myButton.Content.ToString Case myButton.Content.ToString TextBlock1.Text = myButton.Content.ToString & "が選択" Case Else Exit Select End Select End Sub
KinectButtonからカーソル(赤い円)が離れた時の処理
KinectButtonの背景色をGoldに戻します。TextBlock内の表示を消します。
Private Sub Button_KinectCursorLeave(sender As Object, e As Beginning.Kinect.Framework.Input.KinectCursorEventArgs) Handles kinectButton1.KinectCursorLeave Dim myButton As KinectButton = DirectCast(sender, KinectButton) myButton.Background = New SolidColorBrush(Colors.Gold) TextBlock1.Text = String.Empty End Sub
ウィンドウが閉じられた場合の処理
Kinectセンサーが動作している場合は、Kinect センサーの動作を停止し、リソースを開放します。
Private Sub MainWindow_Closing(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles Me.Closing If myKinect Is Nothing = False Then If myKinect.IsRunning = True Then myKinect.Stop() myKinect.Dispose() End If End If End Sub End Class
先のサンプルでは、ツールボックスから3つのKinectButtonをデザイン画面上に配置しましたが、今回はプログラム上から、動的にKinectButtonを生成する処理を紹介いたします。
Kinect Buttonを使って画面上にボタンを表示・操作するサンプル(1)
Kinect Buttonを使って画面上にボタンを表示・操作するサンプル(2)
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。
全文検索エンジンによるおすすめ記事
- Kinectの音声認識を使ってWebブラウザを操作するサンプル
- Kinectで音声を録音・再生するサンプル
- Kinect v2のジェスチャーでBing Mapsを未来的に直感操作する
- Kinect v2を使った「じゃんけんゲーム」を作る
- Kinect v2の音声認識で「仮面」を選んで変身してみる
- WebBrowserコントロールで任意のサイトを表示する+1つのサンプル
- Leap Motionで画像のトリミングと保存を行うためのサンプルプログラムを作る
- センサーの範囲内にいる人間を見つけて撮影・保存するKinectサンプル
- Kinectによる深度データの取得・表示と、モーターを動かすサンプル
- Kinect v2のカメラから画像を取り込んで表示する基本プログラム