InkCanvas加载/保存操作

时间:2011-06-05 21:32:58

标签: c# wpf file bitmap inkcanvas

之前我从未使用InkCanvas控件。我需要的是将文件加载到InkCanvas,绘制一些涂鸦并获得结果图像。我想用获得的图像做一些额外的操作。

至于保存

如果我错了,请纠正我。我找到了一个链接:http://www.centrolutions.com/Blog/post/2008/12/09/Convert-WPF-InkCanvas-to-Bitmap.aspx 根据帖子将加载的图像除了用户涂鸦外还要考虑。或者它只将涂鸦转换为位图?

至于装载

如何使用OpenFileDialog加载图像?我不想使用ISF。

谢谢!

1 个答案:

答案 0 :(得分:5)

<强>存储

如果您希望能够在保存后操纵笔划,则需要保存笔划。您可以使用StrokeCollection.Save方法执行此操作。

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

然后,您可以再次加载它并使各个笔划可访问。但是,一旦将其渲染出来(例如渲染到位图),那么渲染文件只能作为位图而不是单独的笔划加载。 (当然,您可以同时执行这两个操作并将笔划另存为单独的文件)。要保存为位图,您可以使用发布到的链接中的代码。

<强>载入

将位图加载到Image控件非常简单,因为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 article