Member 12277263 Ответов: 2

Как скопировать изображение из графического окна


Всем Привет,

Я пытаюсь скопировать изображение из picturebox в winforms.

Прямо сейчас я дал жестко закодированный путь и имя образа.
SaveImage (@"C:\test\Logo\Resources\Logos\mslogo.png", " microsoftlogo. png");

Вместо того чтобы давать жестко закодированный путь и имя изображения,

Есть ли способ указать путь к файлу (путь щелчка правой кнопкой мыши и то же имя изображения)

частная form_MouseClick недействительным(объект отправителя, MouseEventArgs е)
{
если (электронная.Кнопка == Система.Окна.Формы.Кнопки мыши.Правильно)
{
string[] strButtons ={"сохранить"};

formRightClick frmRightClick = новый formRightClick(strButtons);
frmRightClick.bolPasteToClipBoard = истина;
frmRightClick.Покажите();
frmRightClick.Disposed += new EventHandler(frmRightClick_Disposed);
}
}

частная frmRightClick_Disposed недействительным(объект отправителя, EventArgs в электронной)
{
пробовать
{
formRightClick frmRightClick = (formRightClick)отправитель;
строки strClicked = frmRightClick.strClick.Топпер

// здесь я даю путь к файлу и имя изображения

SaveImage ((@"C:\test\Logo\Resources\Logos\mslogo.png"", " microsoft. png");
}
catch (Exception исключение)
{
генерировать исключения;
}

}

частных статических недействительным SaveImage(строка мышипуть_образаи строку savedName)
{
пробовать
{
Изображение originalImage = изображение.FromFile(imagePath);
string filePath = путь.Комбайн (Окружающая Среда.GetFolderPath(Environment.Специальная папка.UserProfile), "загрузки", savedName);
оригинальное изображение.Сохранить(путь к файлу, система.Рисование.Изображений.ImageFormat.ПНГ);
}
catch (исключение e)
{
бросить е;
}
}

Что я уже пробовал:

Вот способ сохранения изображения
Я вызываю метод save SaveImage (@"C:\test\Logo\Resources\Logos\mslogo.png", " microsoftlogo. png");

частных статических недействительным SaveImage(строка мышипуть_образаи строку savedName)
{
пробовать
{
Изображение originalImage = изображение.FromFile(imagePath);
string filePath = путь.Комбайн (Окружающая Среда.GetFolderPath(Environment.Специальная папка.UserProfile), "загрузки", savedName);
оригинальное изображение.Сохранить(путь к файлу, система.Рисование.Изображений.ImageFormat.ПНГ);
}
catch (исключение e)
{
бросить е;
}
}

2 Ответов

Рейтинг:
2

mahakaal

//Please find below solution for your problem, using this you can copy image from picturebox right click copy option and now you can pate that photo to anywhere in you workstation


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
            ContextMenu cm = new ContextMenu();
            var item = cm.MenuItems.Add("copy", new EventHandler(abc));
             
            pictureBox1.ContextMenu = cm;
            pictureBox1.ImageLocation = @"C:\\Users\\hp\\Pictures\\Happy-Birthday-Brother-moustache-1.jpg";
        }

        public void abc(object sender, EventArgs e)
        {
           
                System.Collections.Specialized.StringCollection FileCollection = new System.Collections.Specialized.StringCollection();
                FileCollection.Add(pictureBox1.ImageLocation);
                Clipboard.SetFileDropList(FileCollection);
          

        }


    }
 
}


Рейтинг:
1

OriginalGriff

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

- Я? Я напишу три способа:

private Image LoadImage(string path)
   {
   using (Image im = Image.FromFile(path))
      {
      return new Bitmap(im);
      }
   }

private string GetImageFullPath(string name)
   {
   return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads", name);
   }

private void SaveImage(Image im, string destPath)
   {
   im.Save(destPath, System.Drawing.Imaging.ImageFormat.Png);
   }

И использовать их.

Примечание: ваш оригинал try ... catch блок не имеет значения: он вообще ничего полезного не делает.


Member 12277263

Спасибо, но как вызвать метод saveImage?

OriginalGriff

Image im = LoadImage(pathToImageFile);
SaveImage (im, GetFullImagePath(nameOfFileToSave));

Member 12277263

hi Image im = LoadImage (@"C:\Code\Logo\Resources\Logos\LC0000_.png");
SaveImage (im, GetImageFullPath ("Vect. png"));

Я все еще передаю путь из проводника файлов,
Мне нужен путь примерно такой (путь "щелчок правой кнопкой мыши + сохранение изображения")