当用MCI指令打开视频文件,并指定播放目标为PictureBox控件,
若在此控件上放置其它PictureBox控件,到是能显示出来,但是不透明。
如何叠加透明控件(纯VB内部自带的控件),主要是想显示一些提示字幕等功能。曾经用超级解霸播放时,若前台有其它程序挡住,且背景色为解霸视频窗口默认背景色时,
也能显示出正在播放的内容。
但我试过把PictureBox控件的背景色改过,但不行。

解决方案 »

  1.   

    见此帖:
    http://expert.csdn.net/Expert/topic/2511/2511218.xml可能会有帮助。
      

  2.   

    本人菜鸟一个,不太懂Overlay,看完上面的分析,还是不太明白。
    我的目标其实很简单,在视频窗口上直接显示播放时间,视频窗口是用MCI指定的PictureBox控件,我想的是用另一个PictureBox控件显示时间,到是可以放在视频窗口上,但就是不透明,有点难看,但兼容性与效率不错。
    不知其它的各种视频播放软件是如何做到的?(可能是画上去的吧?但这就牵涉到一个效率问题了,我想VB可能不太适合)
    不知有没有更方便可靠而且兼容性好的方法?
      

  3.   

    如果只是想显示文本信息的话可以试试用label,将它的BackStyle属性改为0就透明了.
    我试了一下,要将PictureBox做为Label的容器才能将Label显示出来.
      

  4.   

    不行,我试过了,所有轻量控件(不带hWnd的)都不行,只有在视频窗口(本身也是PictureBox)上叠加PictureBox后,才可再放各种控件并可见,但最大问题不透明:(
      

  5.   

    DirectX SDK
    DirectShow 
    Video Mix Render
      

  6.   

    用DIRECTX 或是有一种技术叫直接写屏技术 就是在系统内先得到R0权限 然后相显示缓存中直接写数据不过用VB实现是相当的难 甚至是不可能了 哎... ...我追的女孩她说她喜欢有钱的人 不喜欢我这个穷书生 哎... ...
      

  7.   

    我想到一个办法,先把PictureBox设置成透明的用CreateCompatibleBitmap,顺便也显示时间,然后不断刷新,终于实现透明了(可看到背景的视频了)
    但,,,怎么看,这部分都像是动画片,唉,效率!,效率!!
    难到,在PictureBox视频上显示背景透明字符就这么难?
    我现在还有一个想法,先不管什么DirectX技术,只在全屏播放时,利用另一个窗体显示字符,只要让它保持背景透明,是否就能显示出背后的视频呢?
      

  8.   

    使用另一窗体叠加在视屏窗体上.
    设置给窗体为透明,无边框,其宽度为视屏宽度,高度不能太大(否则,视屏播放可能有问题),画文本或图像到该窗体上,若是静态可以达到你的效果。测试环境:
    操作系统:Win2003或Win2000
    工具:VB。Net   、Direct9.0测试结果:对于静态文本或图像效果不错,但对于动态滚动的文本或图像闪烁较严重。若是在该环境利用Dephi7.0,通过控件很容易实现。可惜VB ... ,Microsoft的产品就是这样啦,保守!