2009-06-23 4 views
0

Wie kann ich ein vorhandenes Bild auf einer Winforms ImageList ersetzen?Wie kann ich ein vorhandenes Bild in einer Winforms ImageList ersetzen?

Ich versuchte dies:

this.CoolPics.Images [ 2 ] = // new image 
this.ListViewControl.SmallImageList = this.CoolPics; 

jedoch das neue Bild nicht so, wie die anderen sind neu skaliert wird, wenn ich die this.CoolPics.Images.Add Methode verwendet.

Was mache ich falsch?

Antwort

0

nach dem Code versuchen

listView1.Refresh(); 
+0

Danke, werde es heute versuchen. –

+0

Ich habe es gerade versucht, aber es hat nicht funktioniert. Das Bild wurde geändert, aber das Bild wurde nicht wie beim ersten Hinzufügen der Bilder neu skaliert. –

0

ich in diese vor ausgeführt haben und wenn ich Recht der Zuweisungsoperator erinnern hatte dieses Verhalten aber die Imagelist.Images.Add (myImage) tat das Richtige.

Versuchen Sie, Ihren Code zu ändern, um die .Add (myImage) zu tun und sehen, ob das nicht besser aussieht.

+0

Danke, das einzige Problem dabei wäre, dass ich entweder das alte entfernen müsste, was die anderen Listenansichts-Elemente ändern würde (?) Oder dass die Bildliste mit unbenutzten Elementen wachsen würde. –

+0

Ich weiß nicht, warum die ImageList ImageCollection über RemoveAt, aber keinen Insert verfügt. Scheint fehlende Funktionalität zu sein. Total hack, aber du könntest es hinzufügen, den zurückgegebenen Index des Adds speichern, den = verwenden, um den gewünschten Index mit dem neuen Index zuzuweisen, und dann RemoveAt verwenden, um den hinzugefügten Index mit dem gespeicherten Index zu entfernen ... – Jeff

1

Ich weiß, das ist alt, aber hier ist, wie ich das Problem gelöst habe. Es sieht so aus, als ob die Bildliste die Größe des Bildes bei der Zuweisung nicht ändert (obwohl dies bei Verwendung der Funktion Add() der Fall ist). Im Grunde genommen müssen Sie das Bild vor der Zuweisung manuell skalieren.

Image img; //used to load new image from disk 
Bitmap bmp = new Bitmap(160, 120); //canvas where the new image will be drawn/resized 
Graphics graph = Graphics.FromImage(bmp); //used to draw/resize the new image 

img = new Bitmap(fileDialog.FileNames[0]); //load new image from disk 

graph.DrawImage(img, new Rectangle(0, 0, 160, 120)); //resize new image to proper size 

imgList.Images[index] = bmp; //assign the new resized image to the list (overwrites the old image)