如何从剪贴板获取屏幕截图
本文关键字:获取 屏幕截图 剪贴板 | 更新日期: 2023-09-27 18:06:51
我试着从剪贴板中获取一个截图。我编写了以下由PRINT-Key触发的代码:
IDataObject obj = Clipboard.GetDataObject();
var formats = obj.GetFormats();
但是"格式"是空的。所有的教程在www告诉我这样做,但我不能解释上述行为。
(我在Windows 7 x64上使用c# with .NET 4.0)
您尝试过Clipboard.GetImage();
方法吗?
下面是MSDN示例
Image GetClipboardImage()
{
if (Clipboard.ContainsImage())
{
return Clipboard.GetImage();
}
// add error handling
}
您是否尝试调用GetImage
方法?
image = Clipboard.GetImage();
在提供的链接中有更多的信息,它还显示了如何检查剪贴板上是否存在图像(ContainsImage
) -但是您可能需要采取一些其他步骤,这取决于何时对象被写入剪贴板。
我甚至不知道GetFormats
方法,也找不到Windows窗体或WPF剪贴板类暴露的方法。
发现我的keylistener阻塞了windows-keylistener。这就是为什么windows没有将截图保存在剪贴板中:-(
)处理:
// get the bounding area of the screen containing (0,0)
// remember in a multidisplay environment you don't know which display holds this point
Drawing.Rectangle bounds = Forms.Screen.GetBounds(System.Drawing.Point.Empty);
// create the bitmap to copy the screen shot to
Drawing.Bitmap bitmap = new Drawing.Bitmap(bounds.Width, bounds.Height);
// now copy the screen image to the graphics device from the bitmap
using (Drawing.Graphics gr = Drawing.Graphics.FromImage(bitmap))
{
gr.CopyFromScreen(Drawing.Point.Empty, Drawing.Point.Empty, bounds.Size);
}