使用c#.net将图像从剪贴板显示到Windows的默认图像查看器

时间:2010-05-26 13:00:14

标签: vb.net image clipboard

我使用下面的函数制作当前表单的图像并将其设置在剪贴板中

Image bit = new Bitmap(this.Width, this.Height);
Graphics gs = Graphics.FromImage(bit);
gs.CopyFromScreen(this.Location, new Point(0, 0), bit.Size);
Guid guid = System.Guid.NewGuid();
string FileName = guid.ToString();
//Copy that image in the clipbaord.
Image imgToCopy = Image.FromFile(Path.Combine(Environment.CurrentDirectory, 
    FileName + ".jpg"));
Clipboard.SetImage(imgToCopy);

现在我的图片在剪贴板中,我可以使用以下代码在其他表单的图片框中显示:

mypicturebox.Image = Clipboard.GetImage();

现在的问题是我想在该系统的默认imageviewer中显示它。所以我认为使用“System.Diagnostics.Process.Start”我们可以这样做..但我不知道,如何找到默认的imageviewer以及如何设置剪贴板的图像 ...请帮助我...如果我找到解决方案比那更好,否则我想将该文件从剪贴板保存到硬盘然后在窗口的默认imageviewer中查看...请帮我解决我的问题..我正在使用c#。净

1 个答案:

答案 0 :(得分:5)

您最好的方法是将图像保存到某个位置的磁盘,然后使用Process.Start运行该文件。这将导致默认查看器应用程序按照您的意愿打开文件。

可以找出哪个程序被设置为默认查看器,然后直接启动该程序(而不是启动文件),但是你有与正在运行的应用程序通信并以某种方式将图像传递给它的问题。对于许多查看器应用程序来说,这可能是不可能的(并且记住有数千个可能的查看器应用程序可以设置为默认值),因为通常您只能通过其命令与查看器应用程序进行通信 - 行参数。

唯一可靠,可靠的方法是将图像保存到磁盘,然后使用Process.Start进行shell启动。