13

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

是一个错误还是这个新 API 不适合以这种方式使用?如果没有,那么我该如何渲染图像InkCanvas呢?

谢谢!

4

2 回答 2

17

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

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);
于 2015-09-13T16:01:38.743 回答
1

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

于 2015-09-11T09:01:36.320 回答