【发布时间】:2010-10-10 13:17:56
【问题描述】:
我的项目的资源文件夹中有一些图像,但我想从项目的这些资源文件中更改图片框
【问题讨论】:
-
这是更好的解决方案:stackoverflow.com/questions/1192054/… - 以后来的人。
我的项目的资源文件夹中有一些图像,但我想从项目的这些资源文件中更改图片框
【问题讨论】:
考虑使用Properties.Resources.yourImage
Properties.Resources 包含您作为资源添加的所有内容(请参阅您的项目属性、资源选项卡)
除此之外,如果您将图像作为资源嵌入到项目中,您可以通过在嵌入图像的程序集上调用 GetManifestResourceStream 来获取它们,例如
Stream imgStream =
Assembly.GetExecutingAssembly().GetManifestResourceStream(
"YourNamespace.resources.ImageName.bmp");
pictureBox.Image = new Bitmap(imgStream);
不要忘记将图像标记为嵌入式资源! (您需要在其属性窗口中设置图像的构建操作)
如果您发现您不断从GetManifestResourceStream 回复null,则您可能输入了错误的名称。 (可能很难找到正确的名称)在程序集上调用GetManifestResourceNames;这将为您返回所有资源名称,您可以在列表中找到所需的名称。
【讨论】:
string img = null;
private void btnShow_Click(object sender, EventArgs e)
{
string imgName;
img = textBox1.Text;
imgName = "images/" + img + ".jpg";
if (imgName == null)
{
MessageBox.Show("no photo");
}
else if (imgName != null)
{
this.picBox1.Image = Image.FromFile("images/" + img + ".jpg");
}
}
【讨论】:
以下是从资源文件夹中获取图像的代码。通常我们将图像保存在资源文件夹中。但有时我们只有图像名称。在这种情况下,您可以仅使用图像名称访问资源文件夹中的图像。
下面的代码将对此进行演示。
private System.Resources.ResourceManager RM = new System.Resources.ResourceManager("YourAppliacationNameSpace.Properties.Resources", typeof(Resources).Assembly);
PbResultImage.Image = (Image)RM.GetObject(YourPictureName);
希望我对某人有所帮助。
谢谢。
【讨论】:
为我工作:
(Bitmap) Properties.Resources.ResourceManager.GetObject("ImageName");
【讨论】:
如果您需要通过字符串或串联引用调用您的控件,这也适用于您的控件。
只需先调用控件类型(在本例中为图片框)。假设 i=某个数字和 d=某个字符串:
var i = <some number>;
var d = <some string>;
((PictureBox)this.Controls["pictureBox" + i.ToString()]).Image = (Image)Properties.Resources.ResourceManager.GetObject("dice" + d);
【讨论】: