【发布时间】:2011-12-11 02:45:10
【问题描述】:
我需要开发一个在 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 也不错。
提前致谢。
【问题讨论】:
-
我怀疑 Gtk 的 Mac OS 端口是否可以让您对平台窗口系统进行低级访问。 GDK 文档提到 GDK_ROOT_WINDOW() 作为后端特定的函数。
-
DefaultRootWindow的概念来自 X Windows。如果它正确地转换为 OS X,我会感到惊讶。 -
我不知道,我尝试使用 DefaultRootWindow,看到有问题,但它会黑屏。
-
@croisharp 是的,我的意思是 DefaultRootWindow 可能只适用于 Linux。 (或者更确切地说,在 X11 下。)GDK 的 OS X 端口完全有可能为您提供一个不返回有用数据的虚拟实现。
标签: c# java .net c++ screen-capture