Вставка изображения в PictureBox из буфера обмена

      Данная пошаговая инструкция позволит вам вставлять различные графические объекты в PictureBox.
      Создайте новый проект Windows Form в Microsoft Visual Studio и добавьте компонент «PictureBox» на форму.

      Определите способ изменения размеров элемента управления «PictureBox» с его родительским элементом управления. Задав свойству «Dock» параметр «Fill», указывающий, что все края элемента управления закрепляются у краев содержащего его элемента, в данном случае это края формы.

Добавьте на форму компонент «ContextMenuStrip»
После добавления компонента, введите в первое поле слово «Вставить».
      Сделайте двойной клик по кнопке «Вставить» и перейдите в автоматически созданный метод «вставитьToolStripMenuItem_Click». Добавьте в него следующий листинг:
//Проверяем есть ли в буфере изображение
if (Clipboard.GetImage() != null)
{
    //Выводим изображение на pictureBox
    pictureBox1.Image = (Image)Clipboard.GetImage();
    //Очищаем буфер, может этого и не стоит делать, 
    //но на этапе тестрования очень удобно
    Clipboard.Clear();
    //Прекращаем обработку
    return;
}

//Если у нас в буфере не было рисунка, но возможно был скопирован 
//файл рисунка в буфер, то
//Создаем список в который поместим все скопированные
// имена файлов из буфера
List addFileName = new List();
//помещаем
foreach (var s in Clipboard.GetFileDropList())
    addFileName.Add(s.ToString());
//Проверяем если имен файлов нет, то выводим об этом сообщение
if (addFileName.Count < 1)
{
    MessageBox.Show("Изображение отсутствует");
    return;
}
//Очищаем буфер
Clipboard.Clear();
//Далее загрузка изображения из файла
//Проверяем существование файла
if (!System.IO.File.Exists(addFileName[0])) return;
//Проверяем является ли файл картинкой
if (!IsValid(addFileName[0])) return;

// Stretches the image to fit the pictureBox.
Bitmap MyImage = new Bitmap(addFileName[0]);
pictureBox1.Image = (Image)MyImage;
      Перейдите в свойства компонента «PictureBox» и найдете свойство «ContextMenuStrip». В меню данного свойства, выберете ваше контекстное меню «сontextMenuStrip1».
      Добавьте дополнительно в листинг вашей главной формы метод проверки, того что находится в буфере обмена, если это изображение, то метод даст разрешение на вставку:
private bool IsValid(string filepath)
{
    try
    {
        using (Image img = Image.FromFile(filepath))
            return
                img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif) ||
                img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png) ||
                img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp) ||
                img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Tiff) ||
                img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg);
    }
    catch
    {
        return false;
    }
}
       Запустите ваш проект, нажав на клавиатуре клавишу «F5». Выберете любое изображение и скопируйте его в буфер обмена. После помещения изображения в буфер обмена, сделайте клик правой клавишей мыши по форме вашего приложения, из появившегося контекстного меню выберете единственный пункт «вставить». Если вы все сделали правильно, то увидите свое изображение в вашем приложении.

Ссылка для скачивания примера: Яндекс.Диск


1 комментарий:

  1. Не совсем понимаю: Создать консольное приложение или винформс? Если 2, то куда что добавить? У меня просто не робит(

    ОтветитьУдалить

Большая просьба, не писать в комментариях всякую ерунду не по теме!