GTK/GDK 截取所有显示器的完整屏幕截图的算法
GTK/GDK Algorithm to take full screenshots of all monitors
我对整个 GTK 游戏还很陌生,想创建一个算法来截取所有显示器的屏幕截图。
我的想法是这样的:
gdk_display_manager_list_displays
- 每个显示器可以有多个屏幕(屏幕意味着显示器?)所以使用
gdk_display_get_n_screens
从 1
获取每个显示器的显示器
- 从
2
获取所有屏幕的根 gtk window
- 为每个根 gtk window 从
3
和 gdk_pixbuf_new
的每个屏幕创建新的 Pixbuf
- 用
gdk_pixbuf_get_from_drawable
填充 4
中的每个像素缓冲区 gdk_pixbuf_get_from_drawable
来自 3
的每个相应屏幕 2
来自 2
的每个相应显示器1
(对于 pixbuf 的每个参数,可能需要 gdk_drawable_get_size
和 gdk_window_get_origin
)
gdk_pixbuf_get_pixels
每个 pixbuf
这是可行的解决方案吗?
如果您确定 cRootWin
不是 NULL 并且 cWidth
和 cHeight
大于 0,那么您应该检查提到的一些其他问题 by the doc。
一个大胆的猜测是您的程序没有足够的内存来存储像素图(通常为 6 Mb)。我会尝试分配 12 Mb 只是为了看看是否是这种情况。
我对整个 GTK 游戏还很陌生,想创建一个算法来截取所有显示器的屏幕截图。
我的想法是这样的:
gdk_display_manager_list_displays
- 每个显示器可以有多个屏幕(屏幕意味着显示器?)所以使用
gdk_display_get_n_screens
从1
获取每个显示器的显示器
- 从
2
获取所有屏幕的根 gtk window
- 为每个根 gtk window 从
3
和gdk_pixbuf_new
的每个屏幕创建新的 Pixbuf
- 用
gdk_pixbuf_get_from_drawable
填充4
中的每个像素缓冲区gdk_pixbuf_get_from_drawable
来自3
的每个相应屏幕2
来自2
的每个相应显示器1
(对于 pixbuf 的每个参数,可能需要gdk_drawable_get_size
和gdk_window_get_origin
) gdk_pixbuf_get_pixels
每个 pixbuf
这是可行的解决方案吗?
如果您确定 cRootWin
不是 NULL 并且 cWidth
和 cHeight
大于 0,那么您应该检查提到的一些其他问题 by the doc。
一个大胆的猜测是您的程序没有足够的内存来存储像素图(通常为 6 Mb)。我会尝试分配 12 Mb 只是为了看看是否是这种情况。