【发布时间】:2012-06-21 16:23:14
【问题描述】:
我需要在C 中编写一个GTK 应用程序,该应用程序使用Cairo 执行一些动画,该动画将呈现到另一个正在运行的应用程序中存在的GTK 小部件中。我们的想法是用VLC 和Mplayer 做同样的事情。例如Mplayer 有-wid 选项:
-wid(另见 -guiwid)(仅限 X11、OpenGL 和 DirectX) 这告诉 MPlayer 附加到现有窗口。用于在浏览器中嵌入 MPlayer(例如插件扩展)。这个选项 完全填充给定的窗口,从而进行纵横比缩放、全景扫描等 不再由 MPlayer 处理,但必须由 创建窗口的应用程序。
使用此Mplayer 选项,您可以使用 GTKImage 小部件创建 GTK 应用程序,获取它的 Xid,然后使用 Mplayer 并指定 Xid 在GTK 应用程序中播放电影。
除了使用Cairo 渲染/绘制到外部窗口之外,我正在尝试做同样的事情。任何人有建议或更好的小代码示例?
【问题讨论】:
-
我认为您不能将任何内容渲染到另一个进程的窗口中。但是,如果罗德里戈的解决方案有效,我会很高兴,因为我当然愿意犯错 ;-)
-
我可以做到,因为我以前做过。编写了一个简单的 GTK 应用程序,其中包含一个 GtkImage 小部件。我能够获得 GtkImage 小部件 Xid 并将其传递给 Mplayer(一个单独的进程),然后将电影渲染到我的 Gtk 应用程序 GtkImage 中。这是此类事情的 C++ gtkmm 示例。 developer.gnome.org/gtkmm-tutorial/stable/…