Room metro Tokyo #4 での LT 資料です。
Surface Pro 3 がノートとしてのユースケースを強調していたので、それに合わせて WPF のインク機能とそのパフォーマンスについての小話。
Surface Pro 3 に備えて、WPF のデジタル インクの小話Digital Ink
View Slide
InkCanvas• 手軽なノート or ホワイトボード− ストローク入力だけなら XAML 1 行− 消しゴム− オブジェクト− 手書き文字認識 (32 bit)• High performance
UI Thread• ストロークの描画中1. ペン スレッドからの入力Rendering ThreadInk Thread ModelPen Thread (thread pool)Input (Touch or Pen)StylusPlugInCollectionDynamicRenderer※ : StylusPoint (座標・筆圧情報)
UI Thread• ストロークの描画中1. ペン スレッドからの入力2. DynamicRenderer が動的レンダリング スレッドでStylusPoint を描画Rendering ThreadInk Thread ModelPen Thread (thread pool)Input (Touch or Pen)StylusPlugInCollection※ : StylusPoint (座標・筆圧情報)DynamicRenderer
UI Thread• ストロークの描画中1. ペン スレッドからの入力2. DynamicRenderer が動的レンダリング スレッドでStylusPoint を描画3. InkCanvas が UI スレッドStylusPoint の受け取り※ : StylusPoint (座標・筆圧情報)Rendering ThreadInk Thread ModelPen Thread (thread pool)Input (Touch or Pen)StylusPlugInCollectionDynamicRenderer
UI Thread• ストロークの描画中• ストロークの終了後1. InkCanvas が静的に描画Rendering ThreadInk Thread ModelPen Thread (thread pool)Input (Touch or Pen)StylusPlugInCollectionDynamicRenderer
UI Thread• ストロークの描画中• ストロークの終了後1. InkCanvas が静的に描画2. 静的に描画されることをDynamicRenderer に通知Rendering ThreadInk Thread ModelPen Thread (thread pool)Input (Touch or Pen)StylusPlugInCollectionDynamicRenderer
UI Thread• ストロークの描画中• ストロークの終了後1. InkCanvas が静的に描画2. 静的に描画されることをDynamicRenderer に通知3. DynamicRenderer が動的レンダリングしたストロークを削除Rendering ThreadInk Thread ModelPen Thread (thread pool)Input (Touch or Pen)StylusPlugInCollectionDynamicRenderer
UI Thread• Dynamic rendering− ペン スレッド− レンダリング スレッド− UI スレッド• 紙・ペンの感覚に近付けるソフトウェア レベルにおける書き味の追及− 2 つの追加スレッドを使用− UI スレッドがブロックされていても描画できるRendering ThreadInk Thread ModelPen Thread (thread pool)Input (Touch or Pen)StylusPlugInCollectionDynamicRenderer