如何在 WPF 中使用 GetResourceStream 加载图标?

发布于 2024-10-30 05:13:01 字数 528 浏览 0 评论 0原文

我已将一个图标添加到我的 WPF 项目(BuildAction 设置为 Resource),现在我尝试将该图标加载到流中:

using(Stream iconStream = Application.GetResourceStream(new Uri("red.ico")).Stream)
{
    // use the stream
}

这给了我以下错误:

无效的 URI:无法确定 URI 的格式。

我尝试更改 Uri 构造以包含 UriKind.Relative。这给出:

无法找到资源“red.ico”。

我看过有关此的各种文章例如(来自SO),我可以看不出我做错了什么。

非常感谢任何帮助。

I've added an icon to my WPF project (BuildAction set to Resource) and I'm now trying to load that icon into a stream:

using(Stream iconStream = Application.GetResourceStream(new Uri("red.ico")).Stream)
{
    // use the stream
}

This gives me the following error:

Invalid URI: The format of the URI could not be determined.

I've tried altering the Uri construction to include UriKind.Relative. This gives:

Cannot locate resource 'red.ico'.

I've looked at various articles on this For Example (from SO) and I can't see what I'm doing wrong.

Any help greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

皓月长歌 2024-11-06 05:13:01

尝试类似 new Uri("pack://application:,,,/red.ico"),请参阅 此页面了解有关 WPF 中 URI 的详细信息。

Try something like new Uri("pack://application:,,,/red.ico"), see this page for more info on URIs in WPF.

瞳孔里扚悲伤 2024-11-06 05:13:01

最终,我的问题归结为这样一个事实:我为 WPF 应用程序创建了一个自定义入口点,并且在调用应用程序的静态构造之前尝试创建一个 URI。

代码从这样的: 更改

public static void Main()
{
    var myUri = new Uri("/red.ico", UriKind.Relative);

    var app = new AppMain();
    app.Run();
}

为这样的:

public static void Main()
{
    var app = new AppMain();        

    var myUri = new Uri("/red.ico", UriKind.Relative);

    app.Run();
}

Ultimately my issue boiled down to the fact that I had created a custom entry point for my WPF application and I was attempting to create a URI before the Application's static constructions had been called.

The code changed from something like this:

public static void Main()
{
    var myUri = new Uri("/red.ico", UriKind.Relative);

    var app = new AppMain();
    app.Run();
}

to something like this:

public static void Main()
{
    var app = new AppMain();        

    var myUri = new Uri("/red.ico", UriKind.Relative);

    app.Run();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文