본문 바로가기

Development/WPF

Gesture Recognition Using InkCanvas

Introduction

WPF에서는 일반적으로 제스처 인식기를 구현하기 위해서는 복잡한 알고리즘을 사용해야하지만, InkCanvas를 이용하면 간단하게 제스처 인식기를 구현 할 수 있습니다.  이번 강좌에서는 InkCanvas를 이용하여 제스처 인식기를 구현하는 방법에 대해 소개합니다.

Create GestureInkCanvas Class

제스처를 인식할 수 있는 InkCanvas를 구현하기 위해 InkCanvas를 상속받는 GestureInkCanvas를 아래과 같이 생성하고 제스처 인식기에 사용할 몇가지 속성(신뢰수준, 이벤트, 제스처 컬렉션)을 구현합니다.

그리고 상속받은 InkCanvas가 Gesture를 인식할 수 있도록 EditingMode를 GestureOnly로 지정하고(만약 제스처인식과 동시에 Ink사용하고자 한다면 EditingMode를 InkAndGesture로 지정합니다.), EnabledGestures 컬렉션을 생성합니다. 그리고EnabledGestures 컬렉션의 내용이 변경되면 InkCanvas의 SetEnabledGestures를 호출하여 인식 대상 제스처를 업데이트 합니다.
마지막으로 InkCanvas가 제스처를 감지했을 경우 호출되는 OnGesture 메서드를 오버라이드하여 인식 결과가 NoGesture가 아니고, 신뢰수준이 사용자가 지정한 수준보다 높거나 같다면 Gesture이벤트를 호출하도록 구현합니다.
※ 참고 : GestureInkCanvas는 코드의 재사용을 위해 InkCanvas를 상속받아 구현하였으며, 상속받지 않고 직접 InkCanvas를 이용해 위와 같은 내용을 구현 할 수도 있습니다.

How to use?

위에서 구현한 GestureInkCanvas는 아래와 같이 XAML 또는 C#코드에서 사용 하실 수 있습니다.

XAML

C#