Je veux charger l'image comme ceci:
void info(string channel)
{
//Something like that
channelPic.Image = Properties.Resources.+channel
}
Parce que je ne veux pas faire
void info(string channel)
{
switch(channel)
{
case "chan1":
channelPic.Image = Properties.Resources.chan1;
break;
case "chan2":
channelPic.Image = Properties.Resources.chan2;
break;
}
}
Est-ce que quelque chose comme ça est possible?
Vous pouvez toujours utiliser System.Resources.ResourceManager
qui renvoie la ResourceManager
en cache utilisée par cette classe. Puisque chan1
et chan2
représentent deux images différentes, vous pouvez utiliser System.Resources.ResourceManager.GetObject(string name)
qui renvoie un objet correspondant à votre saisie avec les ressources du projet.
Exemple
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
Avis : Resources.ResourceManager.GetObject(string name)
peut renvoyer null
si la chaîne spécifiée est introuvable dans les ressources du projet.
Merci,
J'espère que ça t'as aidé :)
Vous pouvez le faire en utilisant le 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;
}
Essayez ceci pour WPF
StreamResourceInfo sri = Application.GetResourceStream(new Uri("pack://application:,,,/WpfGifImage001;Component/Images/Progess_Green.gif"));
picBox1.Image = System.Drawing.Image.FromStream(sri.Stream);
ResourceManager fonctionnera si votre image est dans un fichier de ressources. S'il ne s'agit que d'un fichier dans votre projet (disons la racine), vous pouvez l'obtenir en utilisant quelque chose comme:
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream file = Assembly .GetManifestResourceStream("AssemblyName." + channel);
this.pictureBox1.Image = Image.FromStream(file);
Ou si vous êtes dans 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;
}
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);