我已经能够在我的UWP应用程序中使用C ++ / WinRT以编程方式显示位图图像,但是我无法使SVG图像生效。
以下是我能想到的最简单的例子。我创建了一个应用程序,我加载了一个SVG图像,我将它添加到应用程序窗口并激活窗口。我在下面提供了源代码和SVG文件。
一些注意事项:
#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);
}
<?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>