GTK+-2.0 获取窗口背景像素图

Posted

技术标签:

【中文标题】GTK+-2.0 获取窗口背景像素图【英文标题】:GTK+-2.0 get window background pixmap 【发布时间】:2013-07-26 23:25:04 【问题描述】:

我正在寻找一种使用 GTK+-2.0 存储窗口当前背景像素图的方法

我找到了这个函数:gdk_window_set_back_pixmap(),它允许将像素图设置为背景,但我找不到任何可以让我做相反的事情 - 即获取背景像素图。

【问题讨论】:

【参考方案1】:

您找不到这样的功能,因为没有。来自X Windows FAQ:

Subject: 174) XGetWindowAttributes 能否获取窗口的背景 像素/像素图?

没有。一旦设置,窗口的背景像素或像素图就不能 客户重读。这样做的原因是客户可以创建一个 pixmap,设置为窗口的背景像素图,然后释放 像素图。窗口保持这个背景,但像素图本身是 被摧毁。如果您确定窗口有背景像素(不是 pixmap), 可以使用XClearArea() 清除一个区域到后台 颜色,然后使用XGetImage() 读回该像素。然而,这 action 改变了窗口的内容,并且它受到竞争的影响 条件与暴露。 [由 NCD 和 Stuart 的 Dave Lemke 提供 太阳印记]

由于 GTK 是 X11 原语的一个相当简单的包装器,它提供的功能并没有超出 X11 所能提供的范围。

【讨论】:

【参考方案2】:

我可以推荐这个方法

创建相同大小的子窗口,具有以下属性 背景像素图是 ParentRelative GCTileStipXOrigin 和 GCTileStipYOrigin 为零 GCFillStyle 是 FillTiled 不要映射它 用 XClearWindow 清除它 使用 XGetImage 获取其内容

可能会工作:-)

【讨论】:

以上是关于GTK+-2.0 获取窗口背景像素图的主要内容,如果未能解决你的问题,请参考以下文章

从背景中的窗口获取像素颜色

使用GTK获取关键信息

如何使用 GTK 绘制像素图?

如何在 GTK 和 Python 中获取小部件的背景颜色?

puppeteer与滑动验证2.0

Perl/Gtk3,给窗口添加背景图片