Автоматизация бизнеса

Пользовательский поиск

понедельник, 9 апреля 2012 г.

Загрузка рисунка

Простой способ загрузки рисунка и освобождения памяти !

Ниже приведен метод загрузки и одновременно освобождении памяти,  который возвращает объект типа Image.



public static Image LoadImage(string path)
        {
            using (MemoryStream ms = new MemoryStream(File.ReadAllBytes(path)))
            {
                return Image.FromStream(ms);
            }
        }


  • Здесь 'p' место расположения файла, Например C:\Image.jpg.
  • MemoryStream - Создает поток, резервным хранилищем которого является память.
  • MemoryStream(File.ReadAllBytes(p))- инициализирует новый экземпляр класса MemoryStream на основе указанного массива байтов.
  • Image.FromStream(ms) -Создает изображение из указанного массива байтов.

Ниже приведен пример использования данного метода.

Необходимо создать проект типа WindowsApplication и назвать blogger_LoadImage или любое вам угодное имя. 

В нашем примере нужны следующие пространства имен. 

using System; 
using System.Drawing;
using System.Windows.Forms;
using System.IO;

На форму добавьте контрол типа Button и дайте имя btnOpen, также добавьте PictureBox со свойствами Name - pctImage; BackgroundImageLayout - Stretch. 
А событие Click контрола btnOpen должно выглядеть следующим образом.

        private void btnOpen_Click(object sender, EventArgs e)
        {
            OpenFileDialog filedlg = new OpenFileDialog();
            filedlg.Filter = "Image files |*.jpg;*.png;*.bmp|All files | *.*"; //фильтр для выбираемых файлов
            filedlg.CheckFileExists = true;

// При CheckFileExists=true вместо прерывания будет выдано сообщение, что такого файла нет и исключения не 
//вызывается.

            filedlg.CheckPathExists = true;

// Используется для получения или установки значения, указывающего отображать или нет диалоговое окно 
//предупреждения, если пользователь указал в свойстве FileName имя файла с несуществующим именем директории
           
             filedlg.Multiselect = false

// при значении true позволяет выбрать мышкой при нажатой кнопке Shift или //Ctrl несколько файлов и сохранить их имена в свойстве FileNames в виде массива строк.

            filedlg.Title = "Open Image"; //заголовок диалогового окна.
            try
            {
                DialogResult dlg = filedlg.ShowDialog();
                if (dlg = = DialogResult.OK)
                {
                    pctImage.BackgroundImage = LoadImage(filedlg.FileName);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
        }

        public static Image LoadImage(string path)
        {
            using (MemoryStream ms = new MemoryStream(File.ReadAllBytes(path)))
            {
                return Image.FromStream(ms);
            }
        }
    }
}

Комментариев нет:

Отправить комментарий