Я загрузил серию изображений svg, создав и сохранив для каждого из них CanvasSvgDocument и используя его метод LoadAsync () для загрузки svg:
nextSvg = CanvasSvgDocument(resourceCreator.Device());
auto fileStream = co_await nextFile.OpenReadAsync();
co_await nextSvg.LoadAsync(resourceCreator.Device(),fileStream);
Кажется, это загружает svg, но когда я использую этот сохраненный svg в сеансе рисования, в CanvasControl ничего не появляется. Другие элементы рисуются нормально: фигуры, линии и т. Д. - только не svgs:
session.DrawSvg(m_svg, boxSize, top, left);
Пытаясь обнаружить проблему, я попытался использовать GetXml () в документе svg в надежде, что это покажет мне его содержимое. В результате получается сокращенный svg без информации о чертеже. Я предоставляю это здесь на случай, если это намек:
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"></svg>
Возможно, это все, что должен вернуть GetXml ()? Я успешно нарисовал SVG, если они загружены как источники изображений; получившееся растровое изображение работает. Но возможно ли, что session.DrawSvg () еще не полностью реализован в Win2D? Я бы предпочел визуализировать svg напрямую таким образом, если это возможно.
[Обновить] p.s. SVG - это SVG версии 1.1, преобразованная из PDF-файлов одной из онлайн-служб конвертации. Как я уже упоминал, они нормально отображаются, если открыты в Edge или других браузерах.
[Обновление2] Думая, что в SVG есть что-то, что не нравится Win2D, я попытался создать простую, используя в качестве модели онлайн-пример - в ней просто прямоугольник и круг, как показано ниже. Но тоже не тянет:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 140"
preserveAspectRatio="xMidYMid meet">
<title>Scalable Vector Graphics (SVG) Demo</title>
<circle cx="100" cy="100" r="50" stroke="#000" stroke-width="1" fill="#ccc" />
<rect x="200" y="50" width="250" height="100" rx="5" ry="5"
stroke="#000" stroke-width="1" fill="#ccc" />
</svg>
[Обновление] Похоже, проблема заключается в способе чтения svg из файла хранилища. Я отправлю свой ответ, как только у меня будет достаточно, чтобы он мог быть кому-то полезен.