Как визуализировать 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);
Ответ 2
Попробуйте использовать свойство InkPresenter.StrokeContainer
http://blogs.windows.com/buildingapps/2015/09/08/going-beyond-keyboard-mouse-and-touch-with-natural-input-10-by-10/