Как отобразить InkCanvas на изображение в приложении UWP Windows 10?
на RenderTargetBitmap класс работал с простым Canvas + InkManager (в Windows 8.1) для отображения чернильных штрихов к изображению.
UWP представил объекта inkcanvas и новый чернильный API. Однако, похоже, что RenderTargetBitmap
не работает с этим. Когда я пытаюсь захватить чернильные штрихи с RenderAsync
метод, без чернильных штрихов отображаются только другие объекты, такие как прямоугольник и так далее.
это ошибка или этот новый API не предназначен для использовали таким образом? Если нет, то как я могу сделать изображение из InkCanvas
?
спасибо!
2 ответов
вот как я решил эту проблему с 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/