Entwickler-Ecke
WinForms - Listview ListItem mit Pic einfügen Performanceproblem
watwerbistdudenn - Do 05.03.09 21:04
Titel: Listview ListItem mit Pic einfügen Performanceproblem
Guten Abend zusammen,
kann sein, dass der Thread hier falsch ist und unter Multimedia / Grafik gehört war mir aber nicht sicher. Falls falsch dann schon mal sorrey! :)
Ich würde gerne zur Laufzeit mehrere Bilder per Drag&Drop aus dem Explorer oder Desktop in die Listview einfügen mit Dateiname.
Funktioniert soweit auch alles wunderbar. Habe es so realisiert, mal die Exceptions aussen vor gelassen.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| private void listView1_DragDrop(object sender, DragEventArgs e) { int i = 0; string[] fotos = (string[])e.Data.GetData(DataFormats.FileDrop); this.listView1.View = View.LargeIcon; ImageList imageList = new ImageList(); imageList.ImageSize = new Size(100, 100); imageList.ColorDepth = ColorDepth.Depth32Bit;
foreach (string each in fotos) { Bitmap img= new Bitmap(each); listView1.Items.Add(each,i); imageList.Images.Add(img); i++; }
listView1.LargeImageList = imageList; } |
Aber die Fotos sind meist 6 MPixel groß und das sind dann auch locker mal 30+ Stück. Dann dauert das schon seine Zeit bis es angezeigt wird.
In dem Listview müssen/dürfen die aber maximal 100x100 Pixel groß sein.
Kennt jemand eine elegante Lösung wie das schneller geht??
Danke schon mal für eure Mühe
Grüße
Ralf
Kha - Do 05.03.09 23:50
Bitte verlinke
Posts [
http://www.mycsharp.de/wbb2/thread.php?threadid=68489&hilight=Listview+ListItem+mit+Pic+einf%FCgen+Performanceproblem] in anderen Foren, damit man nachvollziehen kann, was anderswo schon geantwortet wurde, und sich so nicht umsonst (und unbezahlt ;) ) Mühe macht.
Ich glaube nicht, dass es viel an der Performance ändert, wenn du die Bilder direkt beim Laden verkleinerst, aber wenigstens der Arbeitsspeicher wird es danken. Auf jeden Fall könntest du das Laden und die Verarbeitung dann in einen Nebenthread auslagern (Stichwort BackgroundWorker), sodass die UI nicht währenddessen einfriert und die Bilder schön eins nach dem anderen in der ListView erscheinen.
watwerbistdudenn - Sa 07.03.09 17:21
Hi ja recht hast du war mir im ersten Moment nicht so bewusst. Sorry dafür.
Ich finde es spitze, dass andere für Lau anderen helfen. Also wird nicht mehr vorkommen. :wink:
Kha hat folgendes geschrieben : |
Ich glaube nicht, dass es viel an der Performance ändert, wenn du die Bilder direkt beim Laden verkleinerst, aber wenigstens der Arbeitsspeicher wird es danken. |
Ja habe es schon versucht die Bilder vorher zu verkleinern aber es war mir auch schon klar, dass die Performance nicht besser wird dadurch.
Per Backgraoundworker ist mir auch in den Sinn gekommen. Da das Anzeigen der Bilder eher als Spielerrei anzusehen war, hab is es jetzt ganz einfach mit ner Listbox gelöst.
Danke für die Antwort.
Grüße
Ralf
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!