【问题标题】:Drawing directly to the screen via GTK or GDK通过 GTK 或 GDK 直接绘制到屏幕上
【发布时间】:2009-06-10 18:04:42
【问题描述】:

我正在为我和两个同事编写的库开发演示应用程序,以允许 GNOME 应用程序通过 libCanberra 运行音频事件,以允许用户选择视觉事件来替换它们。这是一项注重无障碍的努力,旨在帮助视听障碍用户获得音频警报等的好处。

对于我们的第一个演示,我们只是尝试在我们简单的 GTK 示例应用程序中按下按钮时使整个屏幕闪烁一种颜色。我一直在查看 GTK 文档,我看到的所有绘图都与直接绘制到窗口或其他小部件有关。我想控制整个屏幕的色调。这会是 GDK 的事情吗?我完全脱离基地了吗?

任何链接/帮助将不胜感激!谢谢。

PS:这是用 C 编写的,尽管我认为具有适当绑定的语言之间的函数应该是相同的。

【问题讨论】:

    标签: c gtk gnome gdk


    【解决方案1】:

    你不能。您的应用程序只能访问它自己的窗口,并且不(也不应该)知道任何关于其他窗口或屏幕的信息。 “屏幕”由 GTK 使用的任何后端管理(X?Win32?DirectFB?)。

    也就是说,您可以尝试创建一个覆盖整个屏幕区域的“全屏”窗口。这就是在大多数窗口系统中实现全屏应用程序的方式。

    【讨论】:

    • 小心这一点,就像您绘制一个仅显示其下方内容的全屏窗口一样,您可能会遇到像 Compiz 这样的合成管理器的问题。
    • @MighMoS 和stormsoul 请您详细说明一下,我和Noi 陷入了需要让一个窗口覆盖所有显示器的情况:stackoverflow.com/questions/31366706/…
    【解决方案2】:

    GTK 没有这样的选项 AFAIK,你可能想使用后端:Xlib(或 Xcb)。

    【讨论】:

    • 感谢您的回复。没有时间专门为那部分学习 Xlib,我们通过 GDK 创建了一个完全透明的窗口来完成这个项目的迭代。不幸的是,这需要用户启用合成,但我们为那些没有启用合成的用户提供了等效的解决方案。也就是说,它有效..有点。
    猜你喜欢
    • 2011-12-09
    • 2011-03-04
    • 2014-01-18
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多