0

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

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

4

2 回答 2

0

你找不到这样的功能,因为没有。来自X Windows 常见问题解答

主题:174) XGetWindowAttributes 可以获取窗口的背景像素/像素图吗?

不可以。一旦设置,窗口的背景像素或像素图就不能被客户端重新读取。这样做的原因是客户端可以创建像素图,将其设置为窗口的背景像素图,然后释放像素图。窗口保留此背景,但像素图本身已被破坏。如果您确定窗口具有背景像素(不是像素图),则可以使用XClearArea()将区域清除为背景颜色,然后用于XGetImage()读回该像素。但是,此操作会更改窗口的内容,并且会受到暴露的竞争条件的影响。[由 NCD 的 Dave Lemke 和 Sun 的 Stuart Marks 提供]

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

于 2013-07-28T11:21:20.113 回答
0

我可以建议这种方法

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

可能工作:-)

于 2014-02-26T05:29:37.267 回答