RenderTargetBitmap类与简单的 Canvas + InkManager(在 Windows 8.1 中)一起使用,将墨水笔画渲染到图像。UWP 引入了InkCanvas和新的 Inking API。但是,它似乎RenderTargetBitmap
不适用于此。当我尝试用方法捕捉墨迹时RenderAsync
,没有墨迹只能渲染其他对象,如矩形等。
是一个错误还是这个新 API 不适合以这种方式使用?如果没有,那么我该如何渲染图像InkCanvas
呢?
谢谢!
RenderTargetBitmap类与简单的 Canvas + InkManager(在 Windows 8.1 中)一起使用,将墨水笔画渲染到图像。UWP 引入了InkCanvas和新的 Inking API。但是,它似乎RenderTargetBitmap
不适用于此。当我尝试用方法捕捉墨迹时RenderAsync
,没有墨迹只能渲染其他对象,如矩形等。
是一个错误还是这个新 API 不适合以这种方式使用?如果没有,那么我该如何渲染图像InkCanvas
呢?
谢谢!
这是我用 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);
请尝试 InkPresenter.StrokeContainer 属性 http://blogs.windows.com/buildingapps/2015/09/08/going-beyond-keyboard-mouse-and-touch-with-natural-input-10-by-10/