ロジックコードを記述する
次に、ソリューションエクスプローラー内の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を生成する処理を紹介いたします。
- この記事のキーワード