C# Mac OS X Lion上的屏幕捕获程序,最好可移植到其他操作系统上
我需要开发一个在Mac OS X Lion上运行的屏幕捕获程序。我试图用C# Mac OS X Lion上的屏幕捕获程序,最好可移植到其他操作系统上,c#,java,.net,c++,screen-capture,C#,Java,.net,C++,Screen Capture,我需要开发一个在Mac OS X Lion上运行的屏幕捕获程序。我试图用mono和GTK制作一个屏幕截图,但屏幕截图是黑色的 Gdk.Window window = Gdk.Global.DefaultRootWindow; if (window!=null) { Gdk.Pixbuf pixBuf = new Gdk.Pixbuf(Gdk.Colorspace.Rgb, false, 8,
mono
和GTK
制作一个屏幕截图,但屏幕截图是黑色的
Gdk.Window window = Gdk.Global.DefaultRootWindow;
if (window!=null)
{
Gdk.Pixbuf pixBuf = new Gdk.Pixbuf(Gdk.Colorspace.Rgb, false, 8,
window.Screen.Width, window.Screen.Height);
pixBuf.GetFromDrawable(window, Gdk.Colormap.System, 0, 0, 0, 0,
window.Screen.Width, window.Screen.Height);
pixBuf.ScaleSimple(400, 300, Gdk.InterpType.Bilinear);
pixBuf.Save("screenshot0.jpeg", "jpeg");
}
你能给我指一下正确的方向吗。最好使用mono
,但如果是java
,c++
或objective c
也很好。提前感谢。有关Java,请参阅。不过请注意,
Robot
通常也会为应用程序生成黑屏图像。可以直接控制屏幕区域(例如,许多游戏)。您最好的选择可能是使用特定于平台的API来进行实际的图像捕获,而应用程序的其余部分仍然是可移植的。对于OS X,苹果实际上提供了如何做到这一点,您的代码可能会在X11下工作。我怀疑Gtk的Mac OS端口是否能让您轻松访问平台窗口系统。GDK文档提到GDK_ROOT_WINDOW()是一个后端特定函数。DefaultRootWindow
概念来自X Windows。如果它能正确地翻译成OS X,我会感到惊讶。我不知道,我试过使用DefaultRootWindow,请参阅,但它会出现黑屏。@croisharp是的,我的意思是DefaultRootWindow可能只在Linux上工作。(或者更确切地说,在X11下)GDK的OSX端口完全有可能为您提供一个不返回有用数据的虚拟实现。