我的项目中有一张图像存储在Resources/myimage.jpg中。我如何动态加载这张图像到位图对象?
当前回答
和ImageBox命名为ImagePreview FormStrings。MyImageNames包含一个常规的get/set字符串强制转换方法,该方法链接到滚动框类型列表。 这些图像的名称与列表中的链接名称相同,除了.bmp结尾。 所有位图都被拖到resources.resx中
Object rm = Properties.Resources.ResourceManager.GetObject(FormStrings.MyImageNames);
Bitmap myImage = (Bitmap)rm;
ImagePreview.Image = myImage;
其他回答
在我的情况下——我在我的资源中使用图标,但我需要动态地将它们作为图像添加到一些ToolStripMenuItem(s)。所以在我创建的方法中(这是下面的代码片段的来源),我必须将图标资源转换为位图,然后才能将它们添加到我的菜单项中。
string imageName = myImageNameStr;
imageName = imageName.Replace(" ", "_");
Icon myIcon = (Icon)Resources.ResourceManager.GetObject(imageName);
return myIcon.ToBitmap();
还有一点需要注意的是,如果你的图像/图标在其名称中有空格(" "),当你将它们添加到资源中时,VS会自动将这些空格替换为"_"(s)。因为,在命名资源时,空格不是有效字符。这就是为什么我在引用的代码中使用Replace()方法。你可以忽略这一行。
和ImageBox命名为ImagePreview FormStrings。MyImageNames包含一个常规的get/set字符串强制转换方法,该方法链接到滚动框类型列表。 这些图像的名称与列表中的链接名称相同,除了.bmp结尾。 所有位图都被拖到resources.resx中
Object rm = Properties.Resources.ResourceManager.GetObject(FormStrings.MyImageNames);
Bitmap myImage = (Bitmap)rm;
ImagePreview.Image = myImage;
JDS的回答效果最好。加载图像的c#示例:
包括图像作为资源(项目树->资源,右击添加所需的文件ImageName.png) 嵌入式资源(项目树->资源->ImageName.png,右键单击选择属性) .png文件格式(.bmp .jpg也可以)
pictureBox1。Image = ProjectName.Properties.Resources.ImageName;
注意以下几点:
资源映像文件为“ImageName.png”,文件扩展名应省略。 ProjectName也许可以更充分地理解为“程序集名称”,这将是Project->属性页面上各自的文本条目。
使用VisualStudio 2015 Community成功运行示例代码行。
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(444, 25);
this.toolStrip1.TabIndex = 0;
this.toolStrip1.Text = "toolStrip1";
object O = global::WindowsFormsApplication1.Properties.Resources.ResourceManager.GetObject("best_robust_ghost");
ToolStripButton btn = new ToolStripButton("m1");
btn.DisplayStyle = ToolStripItemDisplayStyle.Image;
btn.Image = (Image)O;
this.toolStrip1.Items.Add(btn);
最好的方法是将它们作为图像资源添加到项目的资源设置中。然后可以通过执行Resources.myimage直接获取映像。这将通过一个生成的c#属性获取图像。
如果你只是将图像设置为嵌入式资源,你可以通过:
string name = "Resources.myimage.jpg"
string namespaceName = "MyCompany.MyNamespace";
string resource = namespaceName + "." + name;
Type type = typeof(MyCompany.MyNamespace.MyTypeFromSameAssemblyAsResource);
Bitmap image = new Bitmap(type.Assembly.GetManifestResourceStream(resource));
其中mytypefrommsameassemblyasresource是程序集中的任何类型。
推荐文章
- 实体框架核心:在上一个操作完成之前,在此上下文中开始的第二个操作
- 如何为构造函数定制Visual Studio的私有字段生成快捷方式?
- 如何使用JSON确保字符串是有效的JSON。网
- AppSettings从.config文件中获取值
- 通过HttpClient向REST API发布一个空体
- 如何检查IEnumerable是否为空或空?
- 自动化invokerrequired代码模式
- 在c#代码中设置WPF文本框的背景颜色
- 在c#中,什么是单子?
- c#和Java中的泛型有什么不同?和模板在c++ ?
- c#线程安全快速(est)计数器
- 如何将此foreach代码转换为Parallel.ForEach?
- 如何分裂()一个分隔字符串到一个列表<字符串>
- 如何转换列表<字符串>列表<int>?
- c#对象列表,我如何得到一个属性的和