c# - 资源中添加图片到Base64编码的ImageStream(resx)

标签 c# .net resources

我正在处理一个旧项目,正在更新它。该程序的一部分有一个工具条,上面有许多按钮,每个按钮都有一个图像。我发现图像存储在 resx 中的 Base64 编码图像流中,并按如下方式访问:

System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
...
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
...
this.toolStrip1.ImageList = this.imageList1;
...
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
...
this.toolStripButton1.ImageIndex = 0;  //There are 41 images, so this can be between 0 and 40

我需要添加另一个带有新图像的按钮。如何向该流中添加图像?

我无法使用设计器,因为它在我加载表单后立即崩溃(我相信是因为它使用了带有不安全代码的自定义组件)。

我总是可以添加一个独立于流的新图像资源,但这会使那个按钮不同,因此会产生一致性问题,从而导致以后的维护问题。所以我想知道是否有任何方式让我编辑图像流。我可以访问原始 base64 字符串,但我不知道从这里去哪里。

最佳答案

  • 创建另一个表单。
  • 添加一个 ImageList 组件。
  • 添加任意图像以生成“图像流”。
  • 打开旧的 resx 并复制“值”元素。
  • 打开新的 resx 并粘贴值元素。
  • 打开新表单。
  • 根据需要添加图片。
  • 保存新表格。
  • 打开新表单的 resx 文件。
  • 复制值元素。
  • 打开旧表单的 resx 文件。
  • 粘贴新的值元素。

关于c# - 资源中添加图片到Base64编码的ImageStream(resx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3039105/

相关文章:

c# - 富文本框最大长度

c# - 如何使用数据注释来验证输入的特定类型

.net - 是否可以本地化 web.config 文件中的 appSettings 信息?

c# - 使用 Task 时,如果 ThreadPool 已满/忙会发生什么情况?

c# - 无法在身份服务器 3 中获取 token

c# - 使用 C# 将 TTS 转为音频 (mp3)

c# - 如何防止第三方调用某些方法?

http - 应如何在 RESTful API 中检索 transient 资源

java - 获取资源的本地文件路径

ruby-on-rails-3 - 资源中的命名路线带我显示页面而不是删除页面