Я пытаюсь включить Windows Ink в приложение UWP и начал с адаптации учебное приложение Windows Ink для сохранения нарисованных штрихов в виде изображения PNG (вместо GIF/ISF).
Итак, представление XAML включает в себя Windows.UI.Xaml.Controls.InkToolbar
и Windows.UI.Xaml.Controls.InkCanvas
, и я могу рисовать штрихи на холсте и сохранять их как файл изображения с помощью следующего кода:
IReadOnlyList<InkStroke> currentStrokes = inkCanvas.InkPresenter.StrokeContainer.GetStrokes();
if (currentStrokes.Count > 0)
{
StorageFile file;
// Using a file picker to identify the target file -> omitted this part
if (file != null)
{
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(currentStrokes);
}
using (var fileStream = await file.OpenAsync(FileAccessMode.ReadWrite))
await renderTarget.SaveAsync(fileStream, CanvasBitmapFileFormat.Png, 1f);
}
}
Пока все работает нормально. Теперь я хотел бы сохранить изображение с прозрачным фоном и изменить следующую строку:
ds.Clear(Colors.Transparent);
Даже в этом случае файл сохраняется, фон прозрачен, а штрихи шариковой ручки и карандаша отображаются правильно, но результат изображения не включает штрихи, нарисованные с помощью инструмента Выделение.
Может кто-нибудь объяснить, почему эти штрихи опущены в этом случае? Можно ли как-то отрисовать штрихи Highlighter на прозрачном фоне?