gpt4 book ai didi

c++ - 如何在 c++/winrt UWP 应用程序中使用 SVG 图像?

转载 作者:行者123 更新时间:2023-11-30 03:26:26 24 4
gpt4 key购买 nike

我已经能够在我的 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);
}

样本.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>

最佳答案

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

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

Content setting

关于c++ - 如何在 c++/winrt UWP 应用程序中使用 SVG 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48302700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com