Как получить реальный размер изображения в списке изображений
У меня есть кусок кода, который показывает фотографии в определенном размере. Я хочу получить реальный размер картинок и хочу показать эти картинки в реальном размере.
Кто-нибудь может мне помочь в этом вопросе. Вот кусок кода, который я использую, чтобы получить фотографии.
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();
}
}