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ファイルに指定し直さなければ動かない可能性があるので、動かない場合は再指定してください。

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