• 11448阅读
  • 11回复

qt能做到浮动在视频上的无背景的字吗? [复制链接]

上一主题 下一主题
离线xiangliuweb
 

只看楼主 正序阅读 楼主  发表于: 2009-11-27
就像电影上面浮动的文字一样。我试过了qt4.3,用mplayer播放视频,再在上面画字,字是显示不出来,估计被视频文件盖在下面了,如果做个控件如qlabel之类再在上面写字是看得见字,但是背景总是去不掉!
离线cycloneii

只看该作者 11楼 发表于: 2010-12-24
Re:回 7楼(cycloneii) 的帖子
引用第9楼zhouyiliang于2010-12-24 10:03发表的 回 7楼(cycloneii) 的帖子 :
你好 谢谢 你的答复, 请问能有什么好的办法解决这个问题吗

只能让后端的播放器来画吧。比如图中的当前事件/总时间,就是MPlayer自己画的
离线xjcook

只看该作者 10楼 发表于: 2010-12-24
不用控件,直接用painter在上面写。
离线zhouyiliang
只看该作者 9楼 发表于: 2010-12-24
回 7楼(cycloneii) 的帖子
你好 谢谢 你的答复, 请问能有什么好的办法解决这个问题吗
离线lxbin2003

只看该作者 8楼 发表于: 2010-12-22
做一个背景是透明的显示文字的控件,叠加上去应该就OK了.
离线cycloneii

只看该作者 7楼 发表于: 2010-12-22
我猜是因为mplayer是获得窗口ID,把视频直接画到对应的窗口上,也就是相当于qt画图的时候先画背景,再画控件,此时背景没有任何显示,当然是黑色的,等qt画完了之后,mplayer通过窗口系统的接口,把视频画面覆盖到qt的窗口上,这里就存在几个可能,
1)这个时候没有通知qt重绘画面,所以qt并不知道画面被修改了,所以就不会有任何绘制动作;
或者2)qt4默认采用的是双缓冲,所以先在自己的缓存绘图,然后再画到屏幕上,而由于qt并不知道屏幕上的内容被改过了,自然就不会更新缓存,这样控件就认为自己的背景仍然是黑色的
或者3)qt用于显示视频的窗口是禁止了paint动作的,这样控件的背景肯定就是默认的背景色黑色了
离线zhouyiliang
只看该作者 6楼 发表于: 2010-12-22
回 3楼(xiangliuweb) 的帖子
我是用mplayer 播放视频的 在视频的上方 显示一些控件 并且让这些控件的背景为透明的, 可运行的效果有控件的地方 背景是黑色的 如果背景改成图片而不是视频 则控件都是透明的 为什么背景是视频的时候 却不行呢 能帮我解答一下吗 谢谢
离线hehui

只看该作者 5楼 发表于: 2010-03-18
QGraphicsView?
离线darian
只看该作者 4楼 发表于: 2010-03-09
应该可以的,smplayer就已经实现了
离线xiangliuweb

只看该作者 3楼 发表于: 2009-11-30
画每一帧图象到界面上这样会很慢很慢的。就直接用播放器在后面播放,然后用透明背景的控件显示在上面,qt4.5支持透明背景,不知道可不可以做到这种效果。
离线duduqq

只看该作者 2楼 发表于: 2009-11-29
你得先获得视频每一帧的图象,然后把图片连继的画到界面上,再到上面把文本画出来就可以做到了
离线xiangliuweb

只看该作者 1楼 发表于: 2009-11-27
像图上的字那样:
快速回复
限100 字节
 
上一个 下一个