Autor Beitrag
Rolf1981
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mo 09.01.12 10:57 
Hallo zusammen,

ich würde gerne über die Methode DrawImage(Imagename, x, y, höhe, breite); während des Programms immer wieder verschiedene Bilder laden. Diese werden zuvor in den Speicher geladen und der Name des jeweiligen Images liegt außerdem als String vor. Über diesen String würde ich das jeweilige Image dann gerne zeichnen lassen. Kann ich in der obigen Methode "Imagename" über einen String ansprechen?

Danke schonmal!
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 09.01.12 11:11 
Hallo Rolf,

wie lädst (bzw. speicherst) du denn die Bilder?
Am einfachsten wäre, du legst ein Dictionary<string, Image> an und speicherst dann unter dem Namen dann das Bild.
Rolf1981 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mo 09.01.12 15:35 
Hi,

die Bilder liegen als JPEGS oder PNGs in einem Verzeichnis und werden zuerst geladen mit

ausblenden C#-Quelltext
1:
2:
3:
4:
Image Berg1 = Image.FromFile("C:\\Berg1.png");
Image Berg2 = Image.FromFile("C:\\Berg2.png");
Image Berg3 = Image.FromFile("C:\\Berg3.png");
//usw.

Gezeichnet wird mit
ausblenden C#-Quelltext
1:
Bilder.DrawImage(Berg1, 40001501500500);					

Nun soll aber jeweils nur ein bestimmter Berg gezeichnet werden. Ich möchte aber - da extrem viele mögliche Bilder - keine ewig lange if-Bedingung. Deshalb soll bei der Draw-Methode "Berg1" durch eine Variable (z.B. ein String) ersetzt werden. Je nach Inhalt des String wird dann der entsprechende Berg gezeichnet.

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 09.01.12 17:47 
Hallo Rolf,

hast du denn mal meinen Vorschlag mit dem Dictionary ausprobiert?

Alternativ kannst du auch einfach ein 'enum' für die ganzen Bilder definieren und darüber dann zugreifen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
enum Bild { Bild1, Bild2, Bild3, /*...*/ };

Dictionary<Bild, Image> dictImages = new Dictionary<Bild, Image>();

foreach (Bild bild in Enum.GetValues(typeof(Bild)))
{
  // die Enums sind genau so definiert, wie die Bilder als Dateinamen heißen (oder umgekehrt ;-)
  Image image = Image.FromFile(Path.Conmbine(path, bild.ToString() + ".png"));

  dictImages.Add(bild, image);
}

Und zugreifen auf ein Bild kannst du dann über das Dictionary mit einem konkreten Bild, z.B.
ausblenden C#-Quelltext
1:
Image image = dictImages[Bild.Bild1];					
Rolf1981 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 24



BeitragVerfasst: Mo 27.02.12 07:45 
Noch ein verspätetes Dankeschön!