【问题标题】:Load Image at runtime from resource in WPF在运行时从 WPF 中的资源加载图像
【发布时间】:2012-04-04 19:07:09
【问题描述】:

我正在尝试使用以下代码在 WPF 中运行时加载图像

_image = new Image();
BitmapImage src = new BitmapImage();
src.BeginInit();
src.UriSource = new Uri(@"pack://application:,,,/images/tagimages/placeholder.png", UriKind.Absolute);                
src.CacheOption = BitmapCacheOption.OnLoad;
src.EndInit();
_image.Source = src;
_image.Stretch = Stretch.None;

在我的项目中,我有一个名为 images 的文件夹和一个名为 tagimages 的文件夹的子文件夹,其中包含 placeholder.png。当我运行此代码时,我收到以下错误

“找不到资源‘images/tagimages/placeholder.png’”

我做错了什么?

【问题讨论】:

  • 您是否在项目中将图像文件的构建操作设置为“资源”?
  • 是的,我已将其设置为资源,并且我已将所有内容设为小写以尝试消除任何大小写问题

标签: wpf


【解决方案1】:

原来我应该用过

Uri(@"pack://application:,,,/<MyProject>;component/images/tagimages/placeholder.png", UriKind.Absolute);

【讨论】:

  • 我正在使用这个的简单版本:
    MainLogoImg.Source = new BitmapImage(new Uri(@"/;component/Resources/" + CurrentLogo, UriKind.Relative)) ;
  • 我不明白这是对旧嵌入式资源的改进,在旧嵌入式资源中,您可以将图像作为强类型属性获取。什么是“包装应用程序三重逗号 MyProject 半冒号相对 URL 声称其绝对”的东西? WPF 没有任何意义。难怪人们必须经过数小时或数天的反复试验才能获得简单的工作。
【解决方案2】:

来自您使用的程序代码:@"pack://application:,,,/putyourfilenamehere" 用于嵌入式资源。

或者换句话说

BitmapImage image = new BitmapImage(new Uri("pack://application:,,,/Images/myimage.png"));

【讨论】:

    猜你喜欢
    • 2010-10-30
    • 2012-11-15
    • 2023-03-16
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多