RenderTargetBitmap类使用简单的canvas+inkmanager(在windows 8.1中)将墨迹笔划渲染到图像。
uwp引入了InkCanvas和一个新的墨水api。不过,似乎RenderTargetBitmap不适用于此。当我尝试使用RenderAsync方法捕获墨迹笔划时,没有墨迹笔划只会呈现其他对象,如矩形等。
是一个bug还是这个新的api不应该这样使用?如果不是,那么我怎样才能把图像从InkCanvas中渲染出来呢?
谢谢!

最佳答案

下面是我如何用win2d解决这个问题的。
首先,将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);

07-28 02:37