2012-01-02 4 views
1

InkAnalyserを使用して手書き認識を行うために、スキャンした手書き素材の一部をInkCanvasに変換しようとしています。 XAMLで手書き資料を入手できます。PathオブジェクトからInkCanvas Strokeをプログラムで作成する

私はの.xamlに保存され、このパス(アルファベットtの境界形状)は、物理的にファイルしている:

<Path xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Fill="#ff231f20" Data="F1 M 
7.931,2.750 L 7.931,12.267 L 0.000,12.267 L 0.000,19.351 L 7.931,19.351 L 7.931,47.268 C 
7.931,53.295 8.988,57.842 11.526,60.697 C 13.747,63.129 17.236,64.609 21.572,64.609 C 
25.167,64.609 28.022,63.975 29.820,63.340 L 29.396,56.256 C 28.022,56.679 26.542,56.890 
24.004,56.890 C 18.822,56.890 17.025,53.295 17.025,46.950 L 17.025,19.351 L 30.349,19.351 
L 30.349,12.267 L 17.025,12.267 L 17.025,0.000 L 7.931,2.750 Z"/> 

を、私はパスのXAMLを読んでのMemoryStreamオブジェクトからPathオブジェクトには、このようなミリそれを読み込みます:

Path myPath = (System.Windows.Shapes.Path)XamlReader.Load(ms); 

私はプログラム的MYPATH対象外ストロークデータを作成し、InkCanvasにそれを追加したいV.という名前のInkCanvasを持っています。

注:InkCanvas VのChildrenにUI要素としてmyPathを追加したくありません。

私はこれを試しました: http://code.msdn.microsoft.com/windowsdesktop/A-Coordinate-supported-03e4f1b7は、座標軸をInkCanvasに描画する方法を説明しているMSDNの記事です。彼はDrawingContextオブジェクトに軸部分の描画を説明しています。

しかし、実際のInkCanvasオブジェクトにこれらの図面をこのDrawingContextオブジェクトを使って実際に読み込む方法については彼が説明していません。私はそこに助けが必要です。

ありがとうございます。

+0

描画コンテキストは、コントロールの描画に関するもので、InkCanvasの機能やストロークとは関係ありません。 –

+0

私は私の質問でその部分をカバーしました。私はそれを知っています。 –

答えて

1

パスからすべてのポイントを取得し、その座標からStylusPointsを作成します。 StylusPointsからStylusPointCollectionを作成し、the respective Stroke constructorを使用してストロークを作成すると、StrokeをキャンバスのStrokesに追加できます。

+0

私のパスにはベジェ要素が含まれています。唯一の方法は、境界内に含まれるすべての点のセットを列挙し、それらをStylusPointCollectionに追加することです。 –

+0

@Pandey:ストロークは圧力値のある点のみで構成されます。ベジェ要素を使用すると、中間点を持つ点を近似することができます。 –

関連する問題