如何在 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);
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);