如何使用 windows 窗体实现在新的 Visual Studio 2012 主窗口中可以看到的相同 alpha 边框效果?它的窗户似乎在发光。
4 回答
所以我不确定这是否是最好的方法,但如果你使用 Spy++(32 位)并查看窗口,你可以看到在 Visual Studio 的主窗口下方,你可以看到 4 个“VisualStudioGlowWindow”对象。
我在 Spy++ 中钩住了消息,正如你想象的那样,4 个窗口代表表单周围的 4 个发光边框。进一步检查表明,这 4 个“发光窗口”实现了 WS_EX_LAYERED 扩展窗口样式,因此发光本身并没有在 WPF 中完成(据我所知)!
希望这可以解决一些问题。
AFAIK,您可以使用这种 chrome和自定义 WPF 边框的混合使用 WPF 来做到这一点。不确定是否可以在 WinForms 上使用,因为它的样式选项有限(与 WPF 相比)。无论如何,他们正在使用 WPF。
除非您想自己处理整个表格,否则您不能。因为 Visual Studio 2010 和 Visual Studio 2012 是在 WPF 之上编写的,并且使用的是 Windows 而不是 Forms。
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 团队中,因此没有改进或新功能的路线图。