選択した画像を指の動きに合わせて回転させるLeap Motionプログラムを作る

2013年11月27日(水)
薬師寺 国安

CircleModel.vbのプログラム・コード

リスト7(ToraModel.vb)

・・・・コード略・・・・
Public Class ToraModel
  Implements INotifyPropertyChanged
' メンバー変数の宣言
  Private no As Integer = 0
  Private ctlr As Controller
  Private listener As LeapListener
  
'  Newメソッド内で、AddHandlerステートメントに、listenerオブジェクトのLeapCircle
' イベントに、CircleActionベントハンドラ—を追加する。
  Public Sub New()
  ・・・コード略・・・
    AddHandler listener.LeapCircle, AddressOf CircleAction
  End Sub
・・・・コード略・・・・

プロパティの宣言

ImageAngleとImageAngle2プロパティを定義します(リスト8)。

リスト8 (CircleModel.vb内のプロパティの宣言)

  Private myImageAngle As Integer
  
    Public Property ImageAngle As Integer
      Get
        Return myImageAngle
      End Get
      Set(value As Integer)
        myImageAngle = value
        OnPropertyChanged("ImageAngle")
      End Set
    End Property
 
    Private myImageAngle2 As Integer
 
    Public Property ImageAngle2 As Integer
      Get
        Return myImageAngle2
      End Get
      Set(value As Integer)
        myImageAngle2 = value
        OnPropertyChanged("ImageAngle2")
      End Set
  End Property

CircleActionメソッドの処理

具体的なコードはリスト9のようになります。

リスト9 モジュール変数Indexの値で条件分岐を行う(CircleActionメソッド)

Private Sub CircleAction(ByVal sd As CircleEnum)
  Select Case sd
    Case CircleEnum.Circle
      Select Case Index
        Case 1
          ImageAngle = no
          no += 10 ' モジュール変数Indexが1の場合はメンバー変noの値が10ずつ増加し、ImageAngleの値に指定する
          Exit Select
        Case 2
          ImageAngle2 = no
          no += 10 ' モジュール変数Indexが1の場合はメンバー変noの値が10ずつ増加し、ImageAngle2の値に指定する
          Exit Select
        Case Else
          Exit Sub
      End Select
    End Select
  End Sub

MainWindow.xaml内に[CircleModel]を取り込む。

まず名前空間として「xmlns:local="clr-namespace:RecognizeFingerTypeTouch"」を定義します。

次にプロパティ要素内に「」と記述します。MainWindow.xaml内に「CircleModel」クラスが取り込まれます。リスト10のようになります。

リスト10 「CircleModel」を取り込んだMainWindow.xaml

<Window x:Class="MainWindow"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  xmlns:mc=http://schemas.openxmlformats.org/markup-compatibility/2006 mc:Ignorable="d" 
  xmlns:local="clr-namespace:RecognizeFingerTypeTouch"
  Title="MainWindow" Height="500" Width="1000">
  <Window.DataContext>
    <local:CircleModel/>
  </Window.DataContext>
  <Canvas>
    <Image x:Name="Image1" HorizontalAlignment="Left" Height="240" VerticalAlignment="Top" Width="320" Source="Images/林_01.png" Canvas.Left="140" Canvas.Top="111">
      <Image.RenderTransform>
        <RotateTransform Angle="{Binding ImageAngle}" CenterX="160" CenterY="120"/>
      </Image.RenderTransform>
    </Image>
    <Image x:Name="Image2" HorizontalAlignment="Left" Height="240" VerticalAlignment="Top" Width="320" Source="Images/林_03.png" Canvas.Left="522" Canvas.Top="111">
      <Image.RenderTransform>
        <RotateTransform Angle="{Binding ImageAngle2}" CenterX="160" CenterY="120"/>
      </Image.RenderTransform>
    </Image>
    <InkPresenter Name="paintCanvas"/>
  </Canvas>
</Window>

※注意
今回紹介したサンプルコードを動かす際には、「LeapCSharp.NET4.0.dll」や「LeapCSharp.dll」、「Leap.dll」を読者自身のフォルダ内にあるDLLファイルに指定し直さなければ動かない可能性があるので、動かない場合は再指定してください。

  • 選択した画像を指の動きに合わせて回転させるLeap Motionプログラム

    『新世代モーションコントローラー Leap Motion -Visual Basicによる実践プログラミング-』 第7回の解説動画です。
薬師寺国安事務所

薬師寺国安事務所代表。Visual Basic プログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。
1950年生まれ。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。1997年に薬師寺聖とコラボレーション・ユニット PROJECT KySS を結成。2003年よりフリーになり、PROJECT KySS の活動に本格的に参加、.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。Windows Phoneアプリ開発を経て、現在はWindows ストア アプリを多数公開中

Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。Microsoft MVP for Development Platforms-Windows Platform Development (Oct 2014-Sep 2015)。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています