我来这里提问是寻求一个答案.我知道在windows的GUI下很难实现alpha混合创造的部分透明的窗口,而碰巧我遇到了.星期5的时候加了一下作者的群,了解到是从底层开发起来,并且明确指出了没有用到windows的GUI.整个程序只有一个exe是绿色版本的程序.大小不过600多K.不知道哪位高手能分析一下实现的原理?难道是通过驱动显卡的方式来绘图?那工作量也太大了吧.是否用得C++和DirectX的形式?我知道这种方式做起半透明来还是比较容易的.但是DirectX很吃资源,我通过任务管理器并没有发现这一点.费解..请高人指点关于程序.(百度搜索"airplay"可以下载看一下效果,十分的华丽.CPU使用率也不是很高)

解决方案 »

  1.   

    试用了下 果然强悍 第一次见到这样的UI 关注
    播放器的靓点 就是在UI下做文章吧
    up
      

  2.   

    WPF可以肯定不是了.因为我没有安装框架却可以运行.
    我刚才分析了一下,最有可能的就是经过长时间的SDK开发.将各个控件以自定义驱动的形势表现到同一界面上合成.
    一开始我可能是理解错了,开发者所说的不用windowsGUI 可能是说的GDI.我以为是驱动显卡直接在LCD上显示.
    佩服的五体投地.后来发现了WS_EX_LAYERED风格后,否认了.
      

  3.   

    api hook下看看有没有用SetLayeredWindow好了我也down一个看看感觉是API肯定能做的。而且用dx实现应该不太难,也不会太占资源。
      

  4.   

    没有用dx,使用了gdiplus而已。我很好奇的是,600k的大小,到底集成了多少音频解码器。。呵呵。
      

  5.   

    Layerd窗口作为载体,就是上面那个半透明的,非layerd窗口作为视图区域,两个窗口移动时互相通知对方挪动。
      

  6.   

    flash cs3的界面里面大量使用了这种技术,不奇怪,还是windows。
      

  7.   

    利用 upx 解压出来是 1,552,384 字节,其中没有用到gdiplus,使用了 UpdateLayeredWindow,暂时未能深究。
      

  8.   


    主要用到4个窗口,都设置了Layered属性,其中3个半透明,一个不透明。不透明的用来显示歌曲名称,信息,以及若干播放操作按钮。基本操作应该是类似你所说,然后在动态化窗口上下足了功夫,可见作者使用界面操作的功力。
    播放使用的是DShow方式。
      

  9.   

    windows可以实现这种透明效果.只不过不知道可不可以做到这么小.而且"千千静听"也可以透明啊.只是没有这个软件这么酷.它的体积我刚刚看了一下也不大.这个软件只实现了一些播放器的基本功能.
      

  10.   

    windows可以实现这种透明效果.只不过不知道可不可以做到这么小.而且"千千静听"也可以透明啊.只是没有这个软件这么酷.它的体积我刚刚看了一下也不大.这个软件只实现了一些播放器的基本功能.
      

  11.   

    这个,是需要花费时间的.也就是做到了足够的细腻.我更觉得是将按钮等用png图片的形式自定义消息来模拟窗口.那样的话,只要绘制在layered窗口上就可以实现这种效果了.代价就是时间.
      

  12.   

    很刁呀,只知道GDI++ 和DX可以做到,至于实际怎么做的,不知道。
      

  13.   

    d3d可以阿,
    也可以用clutter
      

  14.   

    漂亮,WPF是可以做出类似的程序,不过这个显然不是用WPF
      

  15.   

    结贴散分,昨天得到答案了.只是GDI和LAYERED 没用用到GDI+ 每一个控件都绘制到内存DC中处理.最终再通过通道透明