C#,Winform - 使用Drawing.Image为Process类设置参数

时间:2018-05-28 03:56:06

标签: c# process picturebox

我正在picturebox

中生成一张照片
pictureBox1.Image = Image.FromStream(imageActions.GetImage(reader["ID_no"].ToString()));

它工作正常,但我也为用户创建了一个选项,可以通过任何应用程序编辑它(让我们的例子是宏媒体)所以我创建了一个按钮并完成了它。

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 :(得分:0)

要在外部应用程序中加载图像,首先需要将其保存到磁盘中。

应用程序关闭后,您需要加载更新的图像以显示给用户。

PictureBox控件的Image属性有一个可以调用的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 = truephotoViewer.Exited += photoViewer_Exited;这两行会在photoViewer进程退出时告诉您的应用,这是您加载图片并向用户显示的好地方。

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

注意:string tempFile需要是一个类成员变量,因此可以在两个函数中访问它。