如何在使用 Windows 窗体时实现与新版 Visual Studio 2012 主窗口相同的透明边框效果?它的窗口似乎会发光。
所以我不确定这是否是最佳方法,但如果您使用Spy++(32位),并查看窗口,则可以看到在Visual Studio的主窗口下方,可以看到4个“VisualStudioGlowWindow”对象。
我在Spy++中挂钩了消息,正如您所想象的那样,这4个窗口表示表单周围的4个发光边框。进一步检查显示,这4个“发光窗口”实现了WS_EX_LAYERED扩展窗口样式,因此发光本身并没有在WPF中完成(至少据我所知)!
希望这能解决一些问题。
Visual Studio 2012使用本地Win32函数绘制其窗口边框。它与WPF或WindowsForms无关--您可以同时使用两者。
发光效果是在主窗口上方的透明窗口上呈现的。主窗口调用DWM API将玻璃区域设置为0。这样,您就可以在原始边框和系统按钮上绘制。这是正确的方法。
您可以查看WPF Shell(http://archive.msdn.microsoft.com/WPFShell)的代码,以了解如何调用DWM以删除玻璃。它被编写为与WPF兼容并不重要,因为您只需要一个句柄(IntPtr)即可。
如果您有一个WindowsForms代码库,请不要迁移到WPF。WPF在最新的.NET框架发布中没有得到改进,并且没有改进或新功能的路线图,因为其团队已经整合到Windows 8团队中。
除非你想自己处理整个表单的绘制,否则你无法这样做。因为Visual Studio 2010和Visual Studio 2012是基于WPF编写的,并使用Windows而不是Forms。