C #, Winform - Установка аргументов для класса Process с помощью Drawing.Image - PullRequest
0 голосов
/ 28 мая 2018

Я создаю картинку в picturebox

pictureBox1.Image = Image.FromStream(imageActions.GetImage(reader["ID_no"].ToString()));

Она работает отлично, но я также создаю возможность для пользователя редактировать ее через любое приложение (Давайте рассмотрим примерmacromedia) Итак, я создал кнопку и сделал это.

private void button2_Click(object sender, EventArgs e)
        {
            Process photoViewer = new Process();
            photoViewer.StartInfo.FileName = @"C:\Program Files\Macromedia\Fireworks 8\Fireworks.exe";
            photoViewer.StartInfo.Arguments = ___________;
            photoViewer.Start();
        }

Я понимаю, что в photoViewer.StartInfo.Arguments = вы можете указать здесь путь к изображению, но в моем случае.изображение хранится в базе данных как Image тип данных.есть идеи?

1 Ответ

0 голосов
/ 28 мая 2018

Чтобы загрузить изображение во внешнее приложение, вам прежде всего необходимо сохранить его на диск.

После закрытия приложения вам необходимо загрузить обновленное изображение для отображения на экране.user.

Свойство Image элемента управления PictureBox имеет метод Save, который можно вызвать:

string tempFile = System.IO.Path.GetTempFileName();
pictureBox1.Image.Save(tempFile);

Затем можно передать значение tempFile в качестве параметра процессу photoViewer.(Я использовал MSPaint в качестве доказательства концепции):

Process photoViewer = new Process();
photoViewer.StartInfo.FileName = @"C:\Windows\System32\MSPaint.exe";
photoViewer.StartInfo.Arguments = tempFile;
photoViewer.EnableRaisingEvents = true;
photoViewer.Exited += photoViewer_Exited;
photoViewer.Start();

Две строки photoViewer.EnableRaisingEvents = true и photoViewer.Exited += photoViewer_Exited; сообщат вашему приложению, когда завершится процесс photoViewer, и это хорошее место для вас.загрузите изображение и отобразите его своим пользователям.

private void photoViewer_Exited(object sender, EventArgs e)
{
    pictureBox1.Image = Image.FromFile(tempFile);
}

Примечание: string tempFile должна быть переменной члена класса, чтобы к ней можно было получить доступ в двух функциях.

...