4

私はこれまでInkCanvasコントロールを使用したことがありません。必要なのは、ファイルをにロードし、InkCanvas落書きを描画して、結果の画像を取得することです。そして、取得した画像を使って追加の操作を行いたいと思います。

保存に関しては

私が間違っている場合は私を訂正してください。リンクを見つけました:http ://www.centrolutions.com/Blog/post/2008/12/09/Convert-WPF-InkCanvas-to-Bitmap.aspx 投稿によると、に加えて考慮される画像が読み込まれますユーザーの落書き。それとも、落書きをビットマップに変換するだけですか?

ローディングに関しては

OpenFileDialogを使用して画像をロードするにはどうすればよいですか?ISFは使いたくない。

ありがとう!

4

1 に答える 1

5

保存:

保存後にストロークを操作できるようにする場合は、ストロークを保存する必要があります。これを行うには、 StrokeCollection.Saveメソッドを使用します。

var fs = new FileStream(inkFileName, FileMode.Create);
inkCanvas1.Strokes.Save(fs);

次に、これを再度ロードして、個々のストロークにアクセスできるようにします。ただし、一度レンダリングすると(たとえば、ビットマップに)、レンダリングされたファイルはビットマップとしてのみロードでき、個々のストロークとしてはロードできません。(もちろん、両方を実行して、ストロークを別のファイルとして保存することもできます)。ビットマップとして保存するには、投稿したリンクのコードを使用できます。

読み込み中

OpenFileDialogが画像パスを返すため、画像コントロールへのビットマップのロードは簡単です。

if (myOpenFileDialog.ShowDialog() == DialogResult.OK)
{
    myImageControl.Source = new BitmapImage(new Uri(myOpenFileDialog.FileName, UriKind.Absolute));
}

これにより、画像が読み込まれ、フォームの画像コントロールに表示されます。

編集:ビットマップをInkCanvasに直接ロードできるとは思いません。ただし、代わりにストロークをロードできます。

ストロークを再度ロードするには、StrokeCollection(Stream)を使用できます。

var fs = new FileStream(inkFileName,
                FileMode.Open, FileAccess.Read);
StrokeCollection strokes = new StrokeCollection(fs);
inkCanvas1.Strokes = strokes;

その他の関数については、このCodeProjectの記事を読むことができます。

于 2011-06-05T21:49:33.397 に答える