c# - org - mapwindows 5
Cargar imagen de recursos (6)
Quiero cargar la imagen así:
void info(string channel)
{
//Something like that
channelPic.Image = Properties.Resources.+channel
}
Porque no quiero hacer
void info(string channel)
{
switch(channel)
{
case "chan1":
channelPic.Image = Properties.Resources.chan1;
break;
case "chan2":
channelPic.Image = Properties.Resources.chan2;
break;
}
}
Es algo como esto posible?
Prueba esto para WPF
StreamResourceInfo sri = Application.GetResourceStream(new Uri("pack://application:,,,/WpfGifImage001;Component/Images/Progess_Green.gif"));
picBox1.Image = System.Drawing.Image.FromStream(sri.Stream);
Puede agregar un recurso de imagen en el proyecto y luego (haga clic con el botón derecho en el proyecto y elija el elemento Propiedades ) acceda a eso de esta manera:
this.picturebox.image = projectname.properties.resources.imagename;
Puede hacer esto usando ResourceManager
:
public bool info(string channel)
{
object o = Properties.Resources.ResourceManager.GetObject(channel);
if (o is Image)
{
channelPic.Image = o as Image;
return true;
}
return false;
}
ResourceManager funcionará si su imagen está en un archivo de recursos. Si solo se trata de un archivo en su proyecto (digamos la raíz) puede obtenerlo usando algo como esto:
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream file = assembly .GetManifestResourceStream("AssemblyName." + channel);
this.pictureBox1.Image = Image.FromStream(file);
O si estás en WPF:
private ImageSource GetImage(string channel)
{
StreamResourceInfo sri = Application.GetResourceStream(new Uri("/TestApp;component/" + channel, UriKind.Relative));
BitmapImage bmp = new BitmapImage();
bmp.BeginInit();
bmp.StreamSource = sri.Stream;
bmp.EndInit();
return bmp;
}
Siempre puede usar System.Resources.ResourceManager
que devuelve el ResourceManager
almacenado en caché utilizado por esta clase. Dado que chan1
y chan2
representan dos imágenes diferentes, puede usar System.Resources.ResourceManager.GetObject(string name)
que devuelve un objeto que coincide con su entrada con los recursos del proyecto.
Ejemplo
object O = Resources.ResourceManager.GetObject("chan1"); //Return an object from the image chan1.png in the project
channelPic.Image = (Image)O; //Set the Image property of channelPic to the returned object as Image
Aviso : Resources.ResourceManager.GetObject(string name)
puede devolver null
si la cadena especificada no se encontró en los recursos del proyecto.
Gracias,
Espero que encuentres esto útil :)
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);
this.Controls.Add(this.toolStrip1);