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);

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

正在加载

将位图加载到 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 文章

于 2011-06-05T21:49:33.397 回答