在代码中设置WPF图像源

2023-12-28

我正在尝试在代码中设置 WPF 图像的源。图像作为资源嵌入到项目中。通过查看示例,我想出了下面的代码。由于某种原因它不起作用 - 图像没有显示。

通过调试我可以看到该流包含图像数据。那么出了什么问题呢?

Assembly asm = Assembly.GetExecutingAssembly();
Stream iconStream = asm.GetManifestResourceStream("SomeImage.png");
PngBitmapDecoder iconDecoder = new PngBitmapDecoder(iconStream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
ImageSource iconSource = iconDecoder.Frames[0];
_icon.Source = iconSource;

该图标的定义如下:<Image x:Name="_icon" Width="16" Height="16" />


在遇到与您相同的问题并进行一些阅读后,我发现了解决方案 -打包 URI http://msdn.microsoft.com/en-us/library/aa970069.aspx.

我在代码中做了以下操作:

Image finalImage = new Image();
finalImage.Width = 80;
...
BitmapImage logo = new BitmapImage();
logo.BeginInit();
logo.UriSource = new Uri("pack://application:,,,/AssemblyName;component/Resources/logo.png");
logo.EndInit();
...
finalImage.Source = logo;

或者更短,通过使用另一个 BitmapImage 构造函数:

finalImage.Source = new BitmapImage(
    new Uri("pack://application:,,,/AssemblyName;component/Resources/logo.png"));

URI 分为几个部分:

  • 权威:application:///
  • 路径:编译到引用的程序集中的资源文件的名称。路径必须符合以下格式:AssemblyShortName[;Version][;PublicKey];component/Path

    • AssemblyShortName:引用的程序集的短名称。
    • ;版本 [可选]:包含资源文件的引用程序集的版本。当加载两个或多个具有相同短名称的引用程序集时,将使用此选项。
    • ;PublicKey [可选]:用于对引用的程序集进行签名的公钥。当加载两个或多个具有相同短名称的引用程序集时,将使用此选项。
    • ;component:指定所引用的程序集是从本地程序集引用的。
    • /Path:资源文件的名称,包括其路径,相对于引用程序集的项目文件夹的根目录。

后面的三个斜杠application:必须用逗号替换:

注意:pack URI 的权限部分 是一个嵌入的 URI,指向 封装且必须符合 RFC 2396。 此外,“/”字符必须 替换为“,”字符, 和保留字符,例如“%” 和 ”?”必须逃脱。参见OPC 了解详情。

当然,请确保将图像上的构建操作设置为Resource.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在代码中设置WPF图像源 的相关文章

  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • 在 C++ 代码中转换字符串

    我正在学习 C 并开发一个项目来练习 但现在我想在代码中转换一个变量 字符串 就像这样 用户有一个包含 C 代码的文件 但我希望我的程序读取该文件并插入将其写入代码中 如下所示 include
  • 在 Mono 中反序列化 JSON 数据

    使用 Monodroid 时 是否有一种简单的方法可以将简单的 JSON 字符串反序列化为 NET 对象 System Json 只提供序列化 不提供反序列化 我尝试过的各种第三方库都会导致 Mono Monodroid 出现问题 谢谢 f
  • 2个对象,完全相同(除了命名空间)c#

    我正在使用第三方的一组网络服务 但遇到了一个小障碍 在我手动创建将每个属性从源复制到目标的方法之前 我想我应该在这里寻求更好的解决方案 我有 2 个对象 一个是 Customer CustomerParty 类型 另一个是 Appointm
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • 如何向 Mono.ZeroConf 注册服务?

    我正在尝试测试 ZeroConf 示例http www mono project com Mono Zeroconf http www mono project com Mono Zeroconf 我正在运行 OpenSuse 11 和 M
  • 为什么这个 makefile 在“make clean”上执行目标

    这是我当前的 makefile CXX g CXXFLAGS Wall O3 LDFLAGS TARGET testcpp SRCS main cpp object cpp foo cpp OBJS SRCS cpp o DEPS SRCS
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • 包恢复失败。回滚包更改 - Serilog.AspNetCore

    我有一个 asp net Core 项目 我正在尝试向其中添加一个记录器 我选择了我在其他项目中使用过的 SeriLog 但是当我尝试添加 Serilog AspNetCore 我得到的软件包版本 2 0 0 包恢复失败 回滚 后端 的包更
  • 保证复制省略是否适用于函数参数?

    如果我理解正确的话 从 C 17 开始 这段代码现在要求不进行任何复制 Foo myfunc void return Foo auto foo myfunc no copy 函数参数也是如此吗 下面的代码中的副本会被优化掉吗 Foo myf
  • wordexp 失败时我们需要调用 wordfree 吗?

    wordexp 失败时我们需要调用 wordfree 吗 在某些情况下 调用 wordfree 似乎会出现段错误 例如 当 wordfree 返回字符串为 foo bar 的错误代码时 这在手册页中并不清楚 我已经看到在某些错误情况下使用了
  • 现代 UI WPF 导航

    我正在使用现代 ui wpf 并尝试从 CheckLogin xaml 页面导航到 MainWindow xaml 页面 它们位于解决方案根目录中 我在 CheckLogin xaml 中写了这样的内容 BBCodeBlock bbBloc
  • 在 azure blob 存储中就地创建 zip 文件

    我将文件存储在 Blob 存储帐户内的一个容器中 我需要在第二个容器中创建一个 zip 文件 其中包含第一个容器中的文件 我有一个使用辅助角色和 DotNetZip 工作的解决方案 但由于 zip 文件的大小最终可能达到 1GB 我担心在进
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 如何在多线程应用程序中安全地填充数据并 Refresh() DataGridView?

    我的应用程序有一个 DataGridView 对象和一个 MousePos 类型的列表 MousePos 是一个自定义类 它保存鼠标 X Y 坐标 类型为 Point 和该位置的运行计数 我有一个线程 System Timers Timer
  • 读取依赖步行者输出

    I am having some problems using one of the Dlls in my application and I ran dependency walker on it i am not sure how to
  • .NET 和 Mono 之间的开发差异

    我正在研究 Mono 和 NET C 将来当项目开发时我们需要在 Linux 服务器上运行代码 此时我一直在研究 ASP NET MVC 和 Mono 我运行 Ubuntu 发行版 想要开发 Web 应用程序 其他一些开发人员使用 Wind
  • 以编程方式创建 Blob 存储容器

    我有一个要求 即在创建公司时 在我的 storageaccount 中创建关联的 blob 存储容器 并将容器名称设置为传入的字符串变量 我已尝试以下操作 public void AddCompanyStorage string subDo
  • 在 C# 的 WebAPI 中的 ApiController 上使用“传输编码:分块”提供数据

    我需要服务分块传输使用编码数据API控制器 因为我无权访问HttpContext or the Http请求 我有点不知道在哪里写入响应以及在哪里刷新它 设置如下 public class MyController ApiControlle
  • Streamwriter 覆盖 txt 文件中的文本

    有没有什么方法可以重新打开流写入器而不创建新的写入对象 因为此时 当调用 WriteOdd 时 streamwriter 正在覆盖在它之前调用的 WriteEven public void WriteEven StreamWriter wr

随机推荐

  • 跨平台配置、选项、设置、首选项、默认值

    我对人们关于如何最好地在跨平台应用程序中存储首选项和默认设置的看法感兴趣 我主要在 nix 和 Windows 上使用 Node js 和 Perl 但我也对更大的前景感兴趣 在 nix 世界中 点文件 和目录 非常常见 系统范围或应用程序
  • 尝试安装 eclipse 时 eclipse 更新失败

    当尝试使用 eclipse 新软件功能安装 eclipse 时 出现以下错误 Cannot complete the install because one or more required items could not be found
  • dart中通过反射获取私有变量

    我想在 dart 的对象中获取私有变量 这个变量没有吸气剂 所以我想通过反射来做到这一点 我尝试了很多方法 但对我来说没有任何作用 例如 当我这样做时 var reflection reflect this InstanceMirror f
  • AngularJS 应用程序文件结构

    在一个大型 AngularJS 应用程序中 将所有控制器都放在一个 controllers js 文件中 对我来说似乎有点难以维护 有没有更好的方法来做到这一点 例如 js controllers myController js js co
  • Jquery如何在动态创建的元素上绑定点击事件?

    我尝试了下面的代码 但它不起作用 jQuery 1 9 1 在这里试试这个
  • 如何管理 ANTLR 中的可选空白?

    我正在尝试解析 ANTLR 中的数据文件 它有可选的空格 例如 3 6 97 12 15 18 下图显示了线的起点和终点 末尾有一个换行符 并且没有制表符 3 6 97 12 15 18 我的语法是 lines line line ws1
  • 将可空列更改为具有默认值的 NOT NULL

    我今天遇到一个旧表 其中有一个名为 Created 的日期时间列 它允许空值 现在 我想更改它 使其不为 NULL 并且还包含一个添加默认值 getdate 的约束 到目前为止 我已经得到了以下脚本 只要我事先清除了所有空值 该脚本就可以正
  • 为 git 输入提交消息后该怎么办?

    我输入后git commit a弹出一个文本编辑器 我输入我的评论 输入评论后 我必须按哪些按钮才能使其进入实际提交的下一阶段 我在 Windows 上使用默认设置的 mysysGit 尝试这个 git add file name git
  • 在 iOS 模拟器中截图

    我想在模拟器中运行时截取我的 iOS 应用程序的屏幕截图 并将屏幕截图保存在我的 Mac 上 我怎样才能做到这一点 It s just as simple as command s or File gt Save Screen Shot i
  • 使用 JQuery 的 IE 中的堆栈溢出(第 12/1076 行)

    我正在使用来自 Google CDN 的 JQuery 并且在第 12 行 对于 min 文件 和第 1076 行 对于未压缩的文件 出现堆栈溢出错误 使用 IE8 堆栈溢出错误将我带到的行的 JQuery 代码是 jQuery js ma
  • 如何使用 python 将 firestore 查询响应转换为 json

    我写了下面的代码 places ref db client collection u places doc places ref where u city name u paris get print doc 控制台输出为
  • Google Sheets 最大单元格限制和缓解措施

    我在网上读到 Google 表格的最大单元格限制为 500 万个单元格 我目前正在处理的一张工作表已经远远超出了该限制 包括空白单元格 新的限制是多少 我还手动检查了我使用了多少个单元格 有没有 我可以用来进行检查的函数或脚本 我正在处理的
  • 何时在java中使用linkedhashmap而不是hashmap?

    linkedhashmap和hashmap之间的选择有哪些实际场景 我已经完成了每个工作 得出的结论是 linkedhashmap 维护插入顺序 即元素将以与插入顺序相同的顺序检索 而 hashmap 不会维护顺序 那么有人可以告诉我们在什
  • Android Studio:导入图片时无法进行重构

    今天早上我突然无法将 png 文件拖到 Android Studio 中的可绘制文件夹中 我收到消息 无法执行重构 文件是只读的 我已确认这些文件不是只读的 并且已对 Mac 上不同位置的大量图像文件进行了尝试 关于如何解决这个问题有什么想
  • Android 4.3:BLE:startLeScan() 的过滤行为

    我正在开发一个蓝牙传感器设备 我需要为此形成一对多的数据广播 根据规范 外设可能只有一个主设备 并且由于我正在设计的芯片和堆栈的限制 一个主设备只能有三个从设备 据我了解 Android 无论如何都无法成为 BLE 从设备 因此将我的设备作
  • 无法在 Samsung Galaxy S2 的 VideoView 中播放 RTSP 视频

    我正在尝试播放实时 RTSP 视频 来自rtsp media2 tripsmarter com LiveTV BTV using VideoView 这是我的代码 public class ViewTheVideo extends Acti
  • Heroku Redis 上的 SSL 认证验证失败

    我正在使用 Redis 高级计划在 Heroku 上部署 Flask 应用程序 我收到以下错误 SSL 认证验证失败 尝试修复 降级到 Redis 5 Passing ssl cert reqs None to the Redis构造函数在
  • 如何在 Drupal 8 中创建查询

    我习惯在 drupal 7 中使用 db select 但现在它在 drupal 8 中已弃用 因此 如果我需要创建一个查询来列出来自的所有用户users field data表 我该怎么办 我还用吗db select or db quer
  • 首次创建 viewpager 时显示特定页面

    我有一个片段 其中包含ViewPager This ViewPager由一个支持PagerAdapter使用一个Cursor 光标由LoaderCallbacks 我在这里使用 v4 支持库 我想要的是创建片段并让视图分页器显示指定的页面
  • 在代码中设置WPF图像源

    我正在尝试在代码中设置 WPF 图像的源 图像作为资源嵌入到项目中 通过查看示例 我想出了下面的代码 由于某种原因它不起作用 图像没有显示 通过调试我可以看到该流包含图像数据 那么出了什么问题呢 Assembly asm Assembly