如何在 UWP Windows 10 应用程序中将 InkCanvas 渲染为图像?

How to render InkCanvas to an image in UWP Windows 10 application?

RenderTargetBitmap class 使用简单的 Canvas + InkManager(在 Windows 8.1 中)将墨迹渲染到图像。 UWP 引入了 InkCanvas 和一个新的 Inking API。但是,RenderTargetBitmap 似乎不适用于此。当我尝试使用 RenderAsync 方法捕获墨迹笔划时,没有墨迹笔划只渲染其他对象,如矩形等。

这是一个错误还是这个新的 API 不适合这样使用?如果没有,那么我如何渲染 InkCanvas 中的图像?

谢谢!

请尝试InkPresenter.StrokeContainer 属性 http://blogs.windows.com/buildingapps/2015/09/08/going-beyond-keyboard-mouse-and-touch-with-natural-input-10-by-10/

以下是我用 Win2D 解决这个问题的方法。 首先,将 Win2D.uwp nuget 包添加到您的项目中。 然后使用此代码:

CanvasDevice device = CanvasDevice.GetSharedDevice();
CanvasRenderTarget renderTarget = new CanvasRenderTarget(device, (int)inkCanvas.ActualWidth, (int)inkCanvas.ActualHeight, 96);

using (var ds = renderTarget.CreateDrawingSession())
{
    ds.Clear(Colors.White);
    ds.DrawInk(inkCanvas.InkPresenter.StrokeContainer.GetStrokes());
}

using (var fileStream = await file.OpenAsync(FileAccessMode.ReadWrite))
    await renderTarget.SaveAsync(fileStream, CanvasBitmapFileFormat.Jpeg, 1f);