我尝试从剪贴板中截取屏幕截图。我编写了以下由PRINT-Key触发的代码:
IDataObject obj = Clipboard.GetDataObject();
var formats = obj.GetFormats();
但“格式”是空的。 www中的所有教程都告诉我这样做,但我无法解释上述行为。
(我在Windows 7 x64上使用C#和.NET 4.0)
答案 0 :(得分:2)
您是否尝试过Clipboard.GetImage();
方法?
Image GetClipboardImage()
{
if (Clipboard.ContainsImage())
{
return Clipboard.GetImage();
}
// add error handling
}
答案 1 :(得分:1)
您是否尝试过调用GetImage
方法?
image = Clipboard.GetImage();
提供的链接中有更多信息,其中还显示了如何检查剪贴板上是否存在图像(ContainsImage
) - 但您可能需要采取其他一些步骤,具体取决于何时< / em>该对象已写入剪贴板。
我甚至不知道GetFormats
方法,也找不到Windows窗体或WPF剪贴板类公开的方法。
答案 2 :(得分:0)
发现我的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);
}