2017-11-18 14 views
0

特定のサイズの写真を表示するコードがあります。私は写真の実際のサイズを取得したいと思うし、それらの実際のサイズでそれらの写真を表示したい。イメージリストのイメージの実際のサイズを取得する方法

誰でもこの件について私を助けることができます。 ここに私が画像を取得するために使用しているコードがあります。

private void btnZoom_Click(object sender, EventArgs e) 
{ 
    listView1.Items.Clear(); 
    imageList1.Images.Clear(); 

    string[] pics = System.IO.Directory.GetFiles("TestFolder//"); 
    listView1.View = View.SmallIcon; 
    listView1.SmallImageList = imageList1; 

    imageList1.ImageSize = new Size(64, 64); 
    foreach (string pic in pics) 
    { 
     imageList1.Images.Add(Image.FromFile(pic)); 
    } 
    for (int j = 0; j < imageList1.Images.Count; j++) 
    { 
     ListViewItem item = new ListViewItem(); 

     item.ImageIndex = j; 

     listView1.Items.Add(item); 
    } 
} 

これはWindowsフォームアプリケーションです。

+0

あなたがイメージリストから元の画像を取得することはできません。 –

+0

基本的には、リストビューで画像を拡大/縮小せずに表示したいですか? –

+0

はい写真の元の寸法を保持したい – Uniquedesign

答えて

0

ここでもう1つのアプローチは... Tuple<Image, String>を使用して、ListViewItemのTagプロパティにImageとそのフルパスFileNameを格納します。以下のような

何か:

private void btnZoom_Click(object sender, EventArgs e) 
    { 
     listView1.Items.Clear(); 
     imageList1.Images.Clear(); 

     string[] pics = System.IO.Directory.GetFiles(@"C:\Users\mikes\Pictures\Facebook\Backyard Wildlife"); //"TestFolder//"); 
     listView1.View = View.SmallIcon; 
     listView1.SmallImageList = imageList1; 

     imageList1.ImageSize = new Size(64, 64); 
     for(int i = 0; i < pics.Length; i++) 
     { 
      Image img; 
      using (FileStream fs = new FileStream(pics[i], FileMode.Open)) 
      { 
       try 
       { 
        img = Image.FromStream(fs); 
        imageList1.Images.Add(img); 

        ListViewItem item = new ListViewItem(); 
        item.ImageIndex = imageList1.Images.Count - 1; 
        item.Text = System.IO.Path.GetFileNameWithoutExtension(pics[i]); 
        item.Tag = new Tuple<Image, String>(img, pics[i]); 
        listView1.Items.Add(item); 
       } 
       catch (Exception ex) { }; 
      } 


     } 
    } 

    private void btnView_Click(object sender, EventArgs e) 
    { 
     if (listView1.SelectedItems.Count > 0) 
     { 
      ListViewItem item = listView1.SelectedItems[0]; 
      Tuple<Image, String> data = (Tuple < Image, String >)item.Tag; 
      label1.Text = data.Item2; 
      pictureBox1.Image = data.Item1; 
      Size sz = data.Item1.Size; 
      label2.Text = sz.ToString(); 
     } 
    } 
+0

ありがとうございます。それは働いて、それは私の主要な問題の一つを解決しました。ありがとうございます:) – Uniquedesign

+0

ありがとうございます。それは働いて、それは主な問題の私の一つを解決しました。ありがとうございました :) – Uniquedesign