Как использовать изображения SVG в приложении C ++ / winrt UWP?

Мне удалось программно отобразить растровые изображения с помощью C ++ / WinRT в моих приложениях UWP, однако я не могу заставить работать изображения SVG.

Ниже приведен самый простой пример, который я мог придумать. Я создаю приложение, загружаю изображение SVG, добавляю его в окно приложения и активирую окно. Я предоставил исходный код и файл SVG ниже.

Несколько заметок:

  • Приложение работает, просто изображение не отображается
  • Я убедился, что файл SVG соответствует поддерживаемые функции в Windows
  • Файл находится в корневой папке моего проекта
  • Загрузка растровых изображений подобным образом работает без проблем
  • Я пытался устранить неполадки с помощью метода OpenFailed, но информация, которую он дает, бесполезна

источник

#include "pch.h"

using namespace winrt;
using namespace winrt::Windows::ApplicationModel::Activation;
using namespace winrt::Windows::Foundation;
using namespace winrt::Windows::UI::Xaml;
using namespace winrt::Windows::UI::Xaml::Controls;
using namespace winrt::Windows::UI::Xaml::Media::Imaging;struct App : ApplicationT<App>
{
Image mImage;

void OnLaunched(LaunchActivatedEventArgs const &)
{
//Load PNG image - WORKS
//mImage.Source(BitmapImage(Uri(L"ms-appx:///sample.png")));

//Load SVG image - FAILS
mImage.Source(SvgImageSource(Uri(L"ms-appx:///sample.svg")));

//Show image on screen
Window window = Window::Current();
window.Content(mImage);
window.Activate();
}

static void Init(ApplicationInitializationCallbackParams const &)
{
make<App>();
}
};

int WINAPI wWinMain(HINSTANCE, HINSTANCE, PWSTR, int)
{
Application::Start(App::Init);
}

sample.svg

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg width="100" height="100" version="1.1" xmlns="http://www.w3.org/2000/svg">
<circle cx="50" cy="50" r="50"/>
</svg>

0

Решение

Проблема не в вашем коде, а в том, что файл не копируется с содержимым приложения.

Нажми на sample.svg файл в обозревателе решений и посмотрите в свойства Панель инструментов. Ты увидишь Content установить как False, Вам нужно установить его True так что файл копируется в выходную папку вместе с другими файлами содержимого, такими как изображения Content по умолчанию, поэтому вам не нужно этого делать).

Настройка контента

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector