Визуализация текстового маркера в SvgImageSource - PullRequest
0 голосов
/ 25 мая 2020

Сейчас я работаю с приложением UWP, и мне нужно преобразовать изображение SVG с веб-адреса. Я создал новый SvgImageSource с новым Uri, но изображение отображается некорректно. В документе SVG у меня есть 2 маркера: прямоугольник и текст. Rect отображается правильно, но текст не отображается. Кто-нибудь знает, как решить эту проблему? C# код:

public async Task<ImageSource> GetAvatar(string address)
        {
            using(var client = new HttpClient())
            {
                var response = await client.GetAsync(address);
                string content = await response.Content.ReadAsStringAsync();
                if(content.Substring(0, 4).Equals("<svg"))
                {
                    var svg = new SvgImageSource(new Uri(address));
                    return svg;
                }
                return new BitmapImage();
            }
        }

SVG:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<rect width="100%" height="100%" fill="#FF5722"/>
<text x="50%" y="50%" dy="0.36em" text-anchor="middle" pointer-events="none" fill="#ffffff" font-family="'Helvetica', 'Arial', 'Lucida Grande', 'sans-serif'" font-size="125">
M
</text>
</svg>

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Посмотрите на код ниже:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string URL = "https://raw.githubusercontent.com/RocketChat/Rocket.Chat.Artwork/master/Logos/logo-dark.svg";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(URL);
            string text = doc.ToString();
            Console.WriteLine(text);
            Console.ReadLine();
        }
    }
}
0 голосов
/ 25 мая 2020

Боюсь, что text элемент svg не поддерживается платформой UWP. Пожалуйста, отметьте SVG Support текстовый элемент отсутствует в списке поддержки. в настоящее время существует обходной путь - преобразовать текст в элемент path , и он будет работать.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<rect width="100%" height="100%" fill="#FF5722"/>
<path  d="M 81.055 101.5 L 81.055 17.545 L 53.94 78.59 L 40.31 78.59 L 13.05 17.545 L 13.05 101.5 L 0 101.5 L 0 0 L 19.285 0 L 47.415 64.235 L 75.11 0 L 94.83 0 L 94.83 101.5 L 81.055 101.5 Z" vector-effect="non-scaling-stroke"/>
</svg>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...