Autor Beitrag
watwerbistdudenn
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 05.03.09 21:04 
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.

ausblenden 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(100100);
            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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 05.03.09 23:50 
Bitte verlinke Posts 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 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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:

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:

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