none
RRS feed

全部回复

  • 不行,必须使用Win 7 的api才能做到Aero效果。
    2012年8月14日 3:03
  • 可以,看看我的这个例子,完全用WPF brush实现的 :

    https://skydrive.live.com/?cid=51b2fdd068799d15#cid=51B2FDD068799D15&id=51B2FDD068799D15%21967

    但是你说到的Shader的方式,是不行的。 DX Shader 并不是GDI技术,不能尽对某一个窗体句柄做操作,更不能去重绘GDI内容,所以将本窗体设置Shader是可行的,但无法改变其背景。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年8月14日 8:49
    版主
  • 我的例子 只是通过渐变的Brush作为透明窗体 背景来实现的。

    Win 7 Aero Glass 通过 DWM 来实现 ,DWM公开了 一些API可以让我们的窗体实现毛玻璃,但是并不是你要的 非WinAPI啊。

    Shader 只能模糊自身,不能模糊其背景后面的内容,你本身 窗体没有图像,怎么来进行处理呢? 桌面或这者窗体后面的图像不属于你本身窗体,shader无济于事 。

    你为什么拒绝WinAPI的 方式,这是最直接也是最严谨的方法?


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年8月15日 6:12
    版主
  • 1) C#中的代码是我早前用来测试DWM API的 现在无用,可以不用理会。

    2) DWM 没有公开那部分细节,不过从Vista开始,就引入了Windows Display Driver Model (WDDM), 它位于用户模式和内核模式边界之上 ,Windows GDI/GDI+ D3D9/10/11 都在其DirectX Runtime和WDDM基础上运行。http://msdn.microsoft.com/en-us/library/windows/desktop/ee417756(v=vs.85).aspx

    我们可以完全根据 WDDM Driver 去渲染我们要的效果,能力有限,这块太复杂了,比较耗时,没有深入研究。

    dwm.dll不能拿到Win 8 或者其他环境,他以系统底层和硬件环境有依赖性。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年8月16日 6:31
    版主