Как получить реальный размер изображения в списке изображений

У меня есть кусок кода, который показывает фотографии в определенном размере. Я хочу получить реальный размер картинок и хочу показать эти картинки в реальном размере.

Кто-нибудь может мне помочь в этом вопросе. Вот кусок кода, который я использую, чтобы получить фотографии.

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 Form.

1 ответ

Решение

Вот другой подход... сохранить изображение и его полный путь FileName в Tag свойство вашего ListViewItem с помощью Tuple<Image, String>,

Что-то вроде:

    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();
        }
    }
Другие вопросы по тегам