我的项目中有一张图像存储在Resources/myimage.jpg中。我如何动态加载这张图像到位图对象?


当前回答

JDS的回答效果最好。加载图像的c#示例:

包括图像作为资源(项目树->资源,右击添加所需的文件ImageName.png) 嵌入式资源(项目树->资源->ImageName.png,右键单击选择属性) .png文件格式(.bmp .jpg也可以)

pictureBox1。Image = ProjectName.Properties.Resources.ImageName;

注意以下几点:

资源映像文件为“ImageName.png”,文件扩展名应省略。 ProjectName也许可以更充分地理解为“程序集名称”,这将是Project->属性页面上各自的文本条目。

使用VisualStudio 2015 Community成功运行示例代码行。

其他回答

你使用的是Windows窗体吗?如果你已经使用属性/资源UI添加了图像,你可以从生成的代码中访问图像,所以你可以简单地这样做:

var bmp = new Bitmap(WindowsFormsApplication1.Properties.Resources.myimage);

你也可以像这样在var中保存bmp:

var bmp = Resources.ImageName;

希望能有所帮助!

在我的情况下——我在我的资源中使用图标,但我需要动态地将它们作为图像添加到一些ToolStripMenuItem(s)。所以在我创建的方法中(这是下面的代码片段的来源),我必须将图标资源转换为位图,然后才能将它们添加到我的菜单项中。

string imageName = myImageNameStr;
imageName = imageName.Replace(" ", "_");
Icon myIcon = (Icon)Resources.ResourceManager.GetObject(imageName);
return myIcon.ToBitmap();

还有一点需要注意的是,如果你的图像/图标在其名称中有空格(" "),当你将它们添加到资源中时,VS会自动将这些空格替换为"_"(s)。因为,在命名资源时,空格不是有效字符。这就是为什么我在引用的代码中使用Replace()方法。你可以忽略这一行。

使用以下一种。我已经用Windows窗体的网格视图单元进行了测试。

Object rm = Properties.Resources.ResourceManager.GetObject("Resource_Image");
Bitmap myImage = (Bitmap)rm;
Image image = myImage;

名称为“Resource_Image”,可以从项目中找到。

在项目名称下,您可以找到Properties。扩大它。在那里您可以看到参考资料。resx文件。打开它。将文件名应用为“Resource_Image”。

JDS的回答效果最好。加载图像的c#示例:

包括图像作为资源(项目树->资源,右击添加所需的文件ImageName.png) 嵌入式资源(项目树->资源->ImageName.png,右键单击选择属性) .png文件格式(.bmp .jpg也可以)

pictureBox1。Image = ProjectName.Properties.Resources.ImageName;

注意以下几点:

资源映像文件为“ImageName.png”,文件扩展名应省略。 ProjectName也许可以更充分地理解为“程序集名称”,这将是Project->属性页面上各自的文本条目。

使用VisualStudio 2015 Community成功运行示例代码行。