Как визуализировать InkCanvas для изображения в приложении UWP Windows 10?

Класс RenderTargetBitmap работал с простым Canvas + InkManager (в Windows 8.1) для визуализации штрихов к изображению. UWP представил InkCanvas и новый API чернил. Однако, похоже, что RenderTargetBitmap не работает с этим. Когда я пытаюсь выполнить чернильные штрихи с помощью метода RenderAsync, никакие штрихи чернил не будут отображаться только для других объектов, таких как Rectangle и т.д.

Это ошибка, или этот новый API не предназначен для использования таким образом? Если нет, то как я могу сделать изображение из InkCanvas?

Спасибо!

Ответ 1

Вот как я решил эту проблему с 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);