LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1475|回复: 6

请教GTK编程,如何重画被遮挡后复原的窗口

[复制链接]
发表于 2007-9-23 01:34:29 | 显示全部楼层 |阅读模式
请教大家一个GTK编程的问题,我现在在一个窗口(GtkWidget)上显示动态视频,这个现在窗口被部分遮盖后(比如被下拉菜单遮盖),再出现时,被遮盖的部分不能被重画(变成了一片空白), 其它部分仍在正常的显示视频, 我搜索了网上的资料, 讲覆盖后重画的基本都是覆盖的静态的东西, 比如文本, 图片等, 用expose事件, 我试了下好像没有效果, 请问大家这个重画是如何实现的? 我该捕获哪个事件用什么函数才能让该窗口被遮挡的部分参与重画呢?  这个窗口一直在显示视频,所以其它未被遮盖的部分应该是一直重画的.
谢谢大家
 楼主| 发表于 2007-9-24 00:15:40 | 显示全部楼层
哪位指点一下吧,谢谢了:-)
回复 支持 反对

使用道具 举报

发表于 2007-9-24 08:59:43 | 显示全部楼层
视频是pixbuf显示的??
回复 支持 反对

使用道具 举报

发表于 2007-9-24 09:02:54 | 显示全部楼层
gdk_window_hide();

usleep(1000);

gdk_window_show();
呵呵。不知道,这样行不行,本人也是菜鸟。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-24 17:14:51 | 显示全部楼层
Post by realtang
视频是pixbuf显示的??

不是, 是用的gstreamer接收视频流, 解码,然后用它提供的函数gst_x_overlay_set_xwindow_id关联到一个Widget上, show all后视频可以显示,但就是只要被挡住,那一块就变成空白了.
我用g_signal_connect关联了自己的expose-event, 在里面又重复调用gst_x_overlay_set_xwindow_id设置并再次gtk_widget_show_all,貌似不管用.


但是如果这个窗口的一部分被遮挡,之后再次被别的东西(菜单什么的)挡住不同的部分后, 上次被挡住而变白的窗口就可以显示了, 本次遮挡住的部分会变成空白.

请教我该在expose-event里做什么操作才能重画遮挡后变白的部分窗口呢.
谢谢了:-)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-24 17:16:40 | 显示全部楼层
顶一下, 不知道我说明白了没有...
回复 支持 反对

使用道具 举报

发表于 2007-9-24 17:30:46 | 显示全部楼层
那就得对gstream很熟了,你最好到gstream的邮件列表上去问。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表