资源图像可以在 Xaml 中引用,但不能在代码中引用,为啥?

Posted

技术标签:

【中文标题】资源图像可以在 Xaml 中引用,但不能在代码中引用,为啥?【英文标题】:Resource image can be referenced in Xaml but not in code, why?资源图像可以在 Xaml 中引用,但不能在代码中引用,为什么? 【发布时间】:2014-02-11 11:13:08 【问题描述】:

请原谅新手的问题,但我只是在学习 WPF。 我有一张图片,我已将构建操作设置为“资源”

如果我将它设置为 XAML 中的窗口图标,它就可以正常工作。 像这样:

Window ... Icon="Images/MyIco.png"

但是,如果我尝试将其设置为图像的来源,则会出现找不到资源的异常:

Uri uri = new Uri("pack://application:,,,/Images/MyIco.png"); // This does not work
img.Source = BitmapFrame.Create(uri); 

我在上面的代码中做错了什么?

【问题讨论】:

【参考方案1】:

确保你的路径是正确的,如果是真的,你可以试试这个代码来加载你的图片

    //tmp is your path
    BitmapImage img = new BitmapImage(new Uri(tmp, UriKind.Relative));
    img.CreateOptions = BitmapCreateOptions.None;
    img.ImageOpened += img_ImageOpened;

    void img_ImageOpened(object sender, RoutedEventArgs e)
    
        WriteableBitmap wbm = new WriteableBitmap((BitmapImage)sender);                
    

例如:我的路径是“/Assets/sizes/background/bg_02.png”

【讨论】:

如您所见,路径是正确的,因为它适用于 Icon="Images/MyIco.png" 我试图了解 Uri 的路径字符串是否有问题:“pack ://application:,,,/Images/MyIco.png"

以上是关于资源图像可以在 Xaml 中引用,但不能在代码中引用,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 XAML 中添加资源引用

如何将 WPF 图像资源文件夹写入磁盘?

删除在运行时创建的资源的 XAML 设计器错误?

如何从 XAML 引用嵌入式资源?

UWP在不同类库使用ResourceDictionaries

WPF中的xaml引用不同项目间资源的问题