Slide 1

Slide 1 text

Surface Pro 3 に備えて、WPF のデジタル インクの小話 Digital Ink

Slide 2

Slide 2 text

InkCanvas • 手軽なノート or ホワイトボード − ストローク入力だけなら XAML 1 行 − 消しゴム − オブジェクト − 手書き文字認識 (32 bit) • High performance

Slide 3

Slide 3 text

UI Thread • ストロークの描画中 1. ペン スレッドからの入力 Rendering Thread Ink Thread Model Pen Thread (thread pool) Input (Touch or Pen) StylusPlugInCollection DynamicRenderer ※ : StylusPoint (座標・筆圧情報)

Slide 4

Slide 4 text

UI Thread • ストロークの描画中 1. ペン スレッドからの入力 2. DynamicRenderer が動的 レンダリング スレッドで StylusPoint を描画 Rendering Thread Ink Thread Model Pen Thread (thread pool) Input (Touch or Pen) StylusPlugInCollection ※ : StylusPoint (座標・筆圧情報) DynamicRenderer

Slide 5

Slide 5 text

UI Thread • ストロークの描画中 1. ペン スレッドからの入力 2. DynamicRenderer が動的 レンダリング スレッドで StylusPoint を描画 3. InkCanvas が UI スレッド StylusPoint の受け取り ※ : StylusPoint (座標・筆圧情報) Rendering Thread Ink Thread Model Pen Thread (thread pool) Input (Touch or Pen) StylusPlugInCollection DynamicRenderer

Slide 6

Slide 6 text

UI Thread • ストロークの描画中 • ストロークの終了後 1. InkCanvas が静的に描画 Rendering Thread Ink Thread Model Pen Thread (thread pool) Input (Touch or Pen) StylusPlugInCollection DynamicRenderer

Slide 7

Slide 7 text

UI Thread • ストロークの描画中 • ストロークの終了後 1. InkCanvas が静的に描画 2. 静的に描画されることを DynamicRenderer に通知 Rendering Thread Ink Thread Model Pen Thread (thread pool) Input (Touch or Pen) StylusPlugInCollection DynamicRenderer

Slide 8

Slide 8 text

UI Thread • ストロークの描画中 • ストロークの終了後 1. InkCanvas が静的に描画 2. 静的に描画されることを DynamicRenderer に通知 3. DynamicRenderer が 動的レンダリングした ストロークを削除 Rendering Thread Ink Thread Model Pen Thread (thread pool) Input (Touch or Pen) StylusPlugInCollection DynamicRenderer

Slide 9

Slide 9 text

UI Thread • Dynamic rendering − ペン スレッド − レンダリング スレッド − UI スレッド • 紙・ペンの感覚に近付ける ソフトウェア レベルにおける書き味の追及 − 2 つの追加スレッドを使用 − UI スレッドがブロック されていても描画できる Rendering Thread Ink Thread Model Pen Thread (thread pool) Input (Touch or Pen) StylusPlugInCollection DynamicRenderer