0

リストビューのテキストの近くに写真を表示できるように、イメージリストを含むリストビューがあります。

問題は、ボタンを押すたびにアプリケーションが新しい画像を再ダウンロードすることです。これは、以前にダウンロードした画像を削除することを意味します。  

どうすればこれを回避できますか?

    try
    {
        var req = WebRequest.Create(string.Format("http://minotar.net/avatar/{0}/24.png", textBox1.Text));
        var stream = req.GetResponse().GetResponseStream();
        var img = Image.FromStream(stream);
        var imageList1 = new ImageList();
        pictureBox1.Image = img;

        imageList1.Images.Add(Image.FromFile(img2));
        listView1.SmallImageList = imageList1;

        for (int _index = 0; _index < imageList1.Images.Count; _index++)
        {
            var item = new ListViewItem();
            item.ImageIndex = _index;
            listView1.Items.Add(item).Text = " " + textBox1.Text;
        }
    }
    catch (Exception)
    {
        pictureBox1.Image = Properties.Resources._200;
    }
4

1 に答える 1

1

キャッシュを作成し、すでにキャッシュがあるかどうかを確認します。イメージが変更されない場合は、代わりにディスクへのキャッシュ (image.Save) に変更できます。

// Class-level variable
var _imageDictionary = new Dictionary<string,Image>();


// Logic in method
Image image;
if(_imageDictionary.ContainsKey(textBox1.Text))
 image = _imageDictionary[textBox1.Text];
else {
   image = // code to retrieve image from web
   _imageDictionary[textBox1.Text] = image;
}

// ... add it to your image list
于 2012-04-30T21:05:58.383 に答える