$30 off During Our Annual Pro Sale. View Details »

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. Surface Pro 3 に備えて、WPF のデジタル インクの小話
    Digital Ink

    View Slide

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

    View Slide

  3. UI Thread
    • ストロークの描画中
    1. ペン スレッドからの入力
    Rendering Thread
    Ink Thread Model
    Pen Thread (thread pool)
    Input (Touch or Pen)

    StylusPlugInCollection
    DynamicRenderer
    ※ : StylusPoint (座標・筆圧情報)

    View Slide

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

    StylusPlugInCollection
    ※ : StylusPoint (座標・筆圧情報)
    DynamicRenderer

    View Slide

  5. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide