Visual Studio 2012如何绘制窗口边框?

时间:2012-09-18 14:10:43

标签: c# winforms visual-studio-2012

如何使用Windows窗体在新的Visual Studio 2012主窗口中看到相同的alpha边框效果?它的窗户似乎发光。

4 个答案:

答案 0 :(得分:8)

所以我不确定它是否是最好的方法,但是如果你使用Spy ++(32位)并且你在windows中查看,你可以看到在Visual Studio的主窗口下,你可以看到4个“VisualStudioGlowWindow”对象。

我在Spy ++中隐藏了这些消息,正如你想象的那样,4个窗口代表了表单周围的4个发光边框。进一步检查显示这4个“发光窗口”实现了WS_EX_LAYERED扩展窗口样式,因此在WPF中没有完成发光本身(据我所知)。

希望这可以解决一些问题。

enter image description here

答案 1 :(得分:1)

AFAIK你可以使用混合this chrome和自定义WPF边框的WPF来完成它。不确定是否可以使用WinForms,因为它的样式选项有限(与WPF相比)。无论如何they are using WPF

答案 2 :(得分:0)

除非你想自己处理整个表格,否则你不能。因为Visual Studio 2010和Visual Studio 2012是在WPF之上编写的,所以使用Windows而不是表单。

答案 3 :(得分:0)

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团队中,因此没有改进或新功能的路线图。