当前位置: 技术问答>linux和unix
GTK高手帮帮忙,问题解决了再加分
来源: 互联网 发布时间:2016-06-18
本文导语: 我的项目有一个功能是这样的,在一个绘图区中播放视频,要在画面上的不同位置显示8个矩形,矩形不能影响画面的播放,而且要经常变换颜色(红绿,每个矩形一秒钟可能要变换几次),我现在是这样做的,把播...
我的项目有一个功能是这样的,在一个绘图区中播放视频,要在画面上的不同位置显示8个矩形,矩形不能影响画面的播放,而且要经常变换颜色(红绿,每个矩形一秒钟可能要变换几次),我现在是这样做的,把播放视频的绘图区放到一个fixed上,然后用8个小绘图区表示矩形,用gdk_draw_rgb_image()将视频帧画到绘图区中实现播放,在矩形需要变色的时候,先用gdk_window_set_background改变颜色,然后调用gdk_window_invalidate_rect()函数重绘窗口实现变色,但是这样有时候程序确实发送了变色消息,但是颜色却没有改变,不知道是什么原因,会不会是实现变色的效率太低,如果是的话那有没有更好的方法去改变一个控件的颜色?
我想在视频绘图区上加一个透明的矩形绘图区,然后用gdk_draw_rectangle函数把所有的矩形都画到那个绘图区上,那样变色只要重绘矩形就行了,不知道这样的效率是不是好点,但是我用gtk_window_set_opacity()方法却不能实现透明,我的GTK版本是2.12.1
我想在视频绘图区上加一个透明的矩形绘图区,然后用gdk_draw_rectangle函数把所有的矩形都画到那个绘图区上,那样变色只要重绘矩形就行了,不知道这样的效率是不是好点,但是我用gtk_window_set_opacity()方法却不能实现透明,我的GTK版本是2.12.1
|
如果是我,我就用一个窗口播视频,然后另做8个窗口显示不同颜色的矩形。当然要把这8个窗口挪到你需要的位置。
至于透明,gtk应该是不支持窗口透明的,我一般用抓屏的方式实现透明。不知道你用的播放器是什么,如果是mplayer可以将屏幕画面输出作为背景来实现透明。
至于透明,gtk应该是不支持窗口透明的,我一般用抓屏的方式实现透明。不知道你用的播放器是什么,如果是mplayer可以将屏幕画面输出作为背景来实现透明。