Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mac OS X Lion上的屏幕捕获程序,最好可移植到其他操作系统上_C#_Java_.net_C++_Screen Capture - Fatal编程技术网

C# 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,

我需要开发一个在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, 
                                       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端口完全有可能为您提供一个不返回有用数据的虚拟实现。