Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WPF Digital Ink

WPF Digital Ink

Room metro Tokyo #4 での LT 資料です。

Surface Pro 3 がノートとしてのユースケースを強調していたので、それに合わせて WPF のインク機能とそのパフォーマンスについての小話。

Grabacr07

June 04, 2014
Tweet

More Decks by Grabacr07

Other Decks in Programming

Transcript

  1. InkCanvas • 手軽なノート or ホワイトボード − ストローク入力だけなら XAML 1 行

    − 消しゴム − オブジェクト − 手書き文字認識 (32 bit) • High performance <InkCanvas />
  2. UI Thread • ストロークの描画中 1. ペン スレッドからの入力 Rendering Thread Ink

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

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

    レンダリング スレッドで StylusPoint を描画 3. InkCanvas が UI スレッド StylusPoint の受け取り ※ : StylusPoint (座標・筆圧情報) Rendering Thread Ink Thread Model Pen Thread (thread pool) Input (Touch or Pen) <InkCanvas /> StylusPlugInCollection DynamicRenderer
  5. UI Thread • ストロークの描画中 • ストロークの終了後 1. InkCanvas が静的に描画 Rendering

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

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

    静的に描画されることを DynamicRenderer に通知 3. DynamicRenderer が 動的レンダリングした ストロークを削除 Rendering Thread Ink Thread Model Pen Thread (thread pool) Input (Touch or Pen) StylusPlugInCollection DynamicRenderer <InkCanvas />
  8. UI Thread • Dynamic rendering − ペン スレッド − レンダリング

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