Autor Beitrag
Raven280438
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 99



BeitragVerfasst: Fr 01.10.10 23:37 
Hi,

ich zeichne in eine PictureBox viele kleine Bilder, ca. 32x32px, die sich auch oft wiederholen. Im Moment lade ich bei jeder Anzeige die Bilder neu aus einer Datei. Das dauert jetz bei ca. 100 Bilder schon ziemlich lange.
ausblenden C#-Quelltext
1:
2:
Image img = Image.FromFile(verzeichnis + bild);
e.Graphics.DrawImage(img, punkt);


Damit ich die Bilder nicht immer neu aus den Dateien laden muss hab ich mir überlegt, sie in einer List zu speichern und bei Bedarf daraus zu laden. Ich hoffe das geht schneller.

Nur leider hab ich keine Ahnung wie ich das anstelle.
Wie kann ich prüfen, ob ein Image aus einer bestimmten Datei schon in der List existiert?

Ich hoffe mir kann jemand weiterhelfen.



Gruß
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 01.10.10 23:46 
Du musst dir schon merken wo du welches Bild hineingeladen hast.

Die Dateinamen müssen ja auch in irgendeiner Liste stehen. Die geladenen Bilder könnten in der entsprechenden Liste einfach an der selben Stelle stehen.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 02.10.10 00:00 
Du könntest einen Cache erstellen, in dem Bilder Dateinamen zugeordnet sind. Dafür gibt es die Klasse Dictionary<TKey, TValue>:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
public class ImageCache {
  private Dictionary<string, Image> cache = new Dictionary<string, Image>();

  public Image GetImage(string fileName) {
    if (cache.Keys.Contains(fileName))
      return cache[fileName];
    else {
      Image image = Image.FromFile(fileName);
      cache.Add(fileName, image);
      return image;
    }
  }
}
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 04.10.10 07:35 
Hallo,

eine solche Klasse gibt es im .NET Framework schon - heißt ImageCollection.

Gruß