C# InkCanvas加载/保存操作

C# InkCanvas加载/保存操作,c#,wpf,file,bitmap,inkcanvas,C#,Wpf,File,Bitmap,Inkcanvas,我以前从未使用过InkCanvas控件。我需要的是将一个文件加载到InkCanvas,绘制一些涂鸦并获得结果图像。我想对获取的图像进行一些附加操作 至于储蓄 如果我错了,请纠正我。我找到了一个链接: 根据帖子将加载图片考虑除了用户涂鸦。或者它只将涂鸦转换为位图 至于装货 如何使用OpenFileDialog加载图像?我不想使用ISF 谢谢 保存: 如果希望在保存后能够操纵笔划,则需要保存笔划。您可以通过使用该方法来实现这一点 然后,可以再次加载该笔划,并访问各个笔划。但是,一旦渲染出来(例如,渲

我以前从未使用过
InkCanvas
控件。我需要的是将一个文件加载到
InkCanvas
,绘制一些涂鸦并获得结果图像。我想对获取的图像进行一些附加操作

至于储蓄 如果我错了,请纠正我。我找到了一个链接: 根据帖子将加载图片考虑除了用户涂鸦。或者它只将涂鸦转换为位图

至于装货 如何使用OpenFileDialog加载图像?我不想使用ISF


谢谢

保存:

如果希望在保存后能够操纵笔划,则需要保存笔划。您可以通过使用该方法来实现这一点

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

加载

将位图加载到图像控件非常简单,因为
OpenFileDialog
将返回图像路径

if (myOpenFileDialog.ShowDialog() == DialogResult.OK)
{
    myImageControl.Source = new BitmapImage(new Uri(myOpenFileDialog.FileName, UriKind.Absolute));
}
这将加载图像并将其显示在窗体上的图像控件中

编辑: 我认为不能直接将位图加载到InkCanvas。但是,可以加载笔划

要再次加载笔划,可以使用


有关更多功能,请阅读。

1)上面帖子中的代码是否将用户的涂鸦和背景图像存储为一幅图像?2)编写
MyImageControl
时,您的意思是什么。我需要将图像上传到
InkCanvas
。我没有发现这样的属性?1)没有。用户的涂鸦(
笔划
)存储在单独的文件中。2) 我认为InkCanvas无法加载位图。相反,您可以使用StrokeCollection(Stream)再次加载笔划(我已经更新了答案),但我认为这是一种过度的读/写笔划。我需要从生成的图像中获取像素。这意味着我不需要单独的结果,而需要组合(修改后的图像)。如果要分析像素,那么
InkCanvas
不是最好的控件。在InkCanvas中创建图像后,可以保存位图(从您提供的链接),并将字节数组转换为
位图
控件。()转换:然后可以使用Bitmap.GetPixel方法获取像素,或者,如果需要效率,可以使用以下方法:
if (myOpenFileDialog.ShowDialog() == DialogResult.OK)
{
    myImageControl.Source = new BitmapImage(new Uri(myOpenFileDialog.FileName, UriKind.Absolute));
}
var fs = new FileStream(inkFileName,
                FileMode.Open, FileAccess.Read);
StrokeCollection strokes = new StrokeCollection(fs);
inkCanvas1.Strokes = strokes;