【问题标题】:How to use SVG images in c++/winrt UWP application?如何在 c++/winrt UWP 应用程序中使用 SVG 图像?
【发布时间】:2018-01-17 23:48:34
【问题描述】:

我已经能够在我的 UWP 应用程序中使用 C++/WinRT 以编程方式显示位图图像,但是我无法让 SVG 图像工作。

下面是我能想到的最简单的例子。我创建一个应用程序,加载一个 SVG 图像,将其添加到应用程序窗口并激活该窗口。我在下面提供了源代码和 SVG 文件。

几点说明:

  • 应用程序运行,只是没有显示图像
  • 我确保 SVG 文件符合 supported features in 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>

【问题讨论】:

    标签: c++ svg uwp c++-winrt


    【解决方案1】:

    问题不在于您的代码,而在于文件未与应用内容一起复制。

    在解决方案资源管理器中单击sample.svg 文件并查看属性 工具栏。您将看到 Content 设置为 False。您需要将其设置为True,以便将该文件与图像等其他内容文件一起复制到输出文件夹中(默认情况下为Content,因此您不必这样做)。

    【讨论】:

    • 这是需要做的。我发现应用程序资源在 Windows 开发人员页面上没有很好的文档记录,也不容易找到。这帮助很大。
    • 很高兴它有帮助:-)。编码愉快!
    猜你喜欢
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2019-11-24
    • 1970-01-01
    相关资源
    最近更新 更多