Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/35: Рейтинг темы: голосов - 35, средняя оценка - 4.94
1 / 1 / 0
Регистрация: 05.05.2012
Сообщений: 22

загрузка изображения в picturebox из файла. listview, imagelist

06.04.2013, 22:38. Показов 7109. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, суть программы:
Загружаю изображения в imagelist, оттуда в listview. При выборе картинки в listview, необходимо отобразить её в picturebox, если загружать из imagelist - плохое качество. Поэтому сохраняю пути загружаемых изображений в массив строк. Первый раз нажимаю открыть - все хорошо, все добавляет. При последующим нажатии выбивает ошибку: "Индекс находился вне границ массива". Может есть какой нибудь другой способ добавлять изображения в picturebox, или что-то пишу не так... подскажите пожалуйста...
вот мой код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
string[] put = new string[1000];
        private void OpenItem_Click(object sender, EventArgs e)
        {                     
            if (OFD.ShowDialog() == DialogResult.OK)
            {
                listView1.Clear();                
                listView1.View = View.LargeIcon;
                imageList.ImageSize = new Size(50, 50); 
                foreach (var fileName in OFD.FileNames)
                {                                 
                    if (imageList.Images.ContainsKey(fileName.ToString())) continue;
                    Image img = Image.FromFile(fileName);             
                    imageList.Images.Add(fileName.ToString(), img.GetThumbnailImage(50, 50, null, new IntPtr()));                                                                                
                }
                
                listView1.LargeImageList = imageList;
                for (int index = 0; index < imageList.Images.Count; index++)
                {                    
                    put[index] = OFD.FileNames[index];  //здесь добавляю пути в массив строк                  
                    listView1.Items.Add(new ListViewItem() { ImageIndex = index });                    
                }    
           
                listView1.Refresh();
                
            }
        }
 
 Bitmap sub_image;
         
        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                sub_image = new Bitmap(put[listView1.SelectedItems[0].ImageIndex], true);
                pictureBox1.Image = sub_image;
            }                         
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.04.2013, 22:38
Ответы с готовыми решениями:

Загрузка изображения в picturebox
Добрый вечер, подскажите, создаю я форму значит добавляю туда кнопки(несколько) и picturebox; не получается сделать чтобы к примеру при...

Загрузка изображения в PictureBox
Мне нужно что-бы Юзер мог загружать в PictureBox изображение. Я видел подобную тему но там не было толкового ответа. Там просто упомянули...

Загрузка изображения в ListView
Подскажите пожалуйста, как из папки загрузить полноразмерное изображение в ListView, напрямую, без ImageList. Картинка 700x400 px.

3
21 / 21 / 7
Регистрация: 21.01.2013
Сообщений: 38
06.04.2013, 23:07
Когда-то давно делал такое, тут при нажатии на кнопку, задаю путь к папке с фотографиями, имена которых появляются в листбоксе, там когда нажимаю любое фото, оно отображается в пикчербоксе

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
    public partial class Form1 : Form
    {
        int pbw, pbh, pbX, pbY;
        string aPath;
        public Form1()
        {
            InitializeComponent();
            pbh = pictureBox1.Height;
            pbw = pictureBox1.Width;
            pbX = pictureBox1.Location.X;
            pbY = pictureBox1.Location.Y;
            listBox1.Sorted = true;
            DirectoryInfo di;
            di = new DirectoryInfo (Environment.GetFolderPath(Environment.SpecialFolder.MyPictures));
            aPath = di.FullName;
            label1.Text = aPath;
            FillListBox(aPath);
        }
        private Boolean FillListBox(string aPath)
        {
            DirectoryInfo di = new DirectoryInfo(aPath);
            FileInfo[] fi = di.GetFiles("*.jpg");
            listBox1.Items.Clear();
            foreach (FileInfo fc in fi)
            {
                listBox1.Items.Add(fc.Name);
            }
            label1.Text = aPath;
            if (fi.Length == 0) return false;
            else
            {
                listBox1.SelectedIndex = 0;
                return true;
            }
        }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            double mh, mw;
            pictureBox1.Visible = false;
            pictureBox1.Left = pbX;
            pictureBox1.Image = new Bitmap(aPath + "\\" + listBox1.SelectedItem.ToString());
            if ((pictureBox1.Image.Width > pbw) || (pictureBox1.Image.Height > pbh))
            {
                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
                mh = (double)pbh / (double)pictureBox1.Image.Height;
                mw = (double)pbw / (double)pictureBox1.Image.Width;
                if (mh < mw)
                {
                    pictureBox1.Width = Convert.ToInt16(pictureBox1.Image.Width * mh);
                    pictureBox1.Height = pbh;
                }
                else
                {
                    pictureBox1.Width = pbw;
                    pictureBox1.Height = Convert.ToInt16(pictureBox1.Image.Height * mw);
                }
            }
            pictureBox1.Left = pbX + (pbw - pictureBox1.Width) / 2;
            pictureBox1.Top = pbY + (pbh - pictureBox1.Height) / 2;
            pictureBox1.Visible = true;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fb = new FolderBrowserDialog();
            fb.Description = "Выберите папку, \n" + "в которой находятся иллюстрации";
            fb.ShowNewFolderButton = false;
            if (fb.ShowDialog() == DialogResult.OK)
            {
                aPath = fb.SelectedPath;
                label1.Text = aPath;
                if (!FillListBox(fb.SelectedPath))
                    pictureBox1.Image = null;
            }
        }
    }
0
1 / 1 / 0
Регистрация: 05.05.2012
Сообщений: 22
07.04.2013, 10:43  [ТС]
Цитата Сообщение от Zen1a Посмотреть сообщение
Когда-то давно делал такое, тут при нажатии на кнопку, задаю путь к папке с фотографиями, имена которых появляются в листбоксе, там когда нажимаю любое фото, оно отображается в пикчербоксе
Спасибо, но это не то что мне нужно... у меня открытие изображений через openfiledialog... в общем такое не применить к моей программе...
0
21 / 21 / 7
Регистрация: 22.02.2013
Сообщений: 237
14.09.2013, 22:34
Подниму вопрос о плохом качестве изображений в ImageList. Можно это как-то решить или делать массив Image?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.09.2013, 22:34
Помогаю со студенческими работами здесь

Загрузка изображения через openDialog в PictureBox
Всем доброго времени суток, нужно изображение которое я выбираю через openDialog загружалось в PictureBox и в переменную bmp. Я сделал чтоб...

Загрузка изображения из Access 2007-2010 в pictureBox
Подскажите, есть код который подгружает обычные данные (строки, числа) из базы. Как подправить код, чтобы извлекать картинки (формат *.png...

Загрузка изображения в PictureBox с автоматическим изменением разрешения
Есть OpenFileDialog, он открывает изображение и помещает его в PictureBox, а мне нужно чтобы после этого действия разрешение изображения...

ListView загрузка изображения (jpg, png, bmp)
Всем привет! Всех с праздником! Есть код: FMX procedure TForm1.Button1Click(Sender: TObject); var

Загрузка в ListView из файла
Собственно....помогите разобраться как загрузить из файла строки в ListView с разделителем пробелом.. т.е после пробела новый item... и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru