.net - C# 2.0 应用程序中的玻璃效果

发布于 2024-07-23 11:03:35 字数 66 浏览 7 评论 0原文

如何在 .net 2.0 中的 Windows 窗体应用程序上提供 Vista 或 Mac OS X 风格的玻璃效果?

How can I give a Vista or Mac OS X style glass effects on windows forms applications in .net 2.0?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

总以为 2024-07-30 11:03:35

这是通过使用 Vista DWM(桌面窗口管理器)API 的互操作来完成的。

例如,导入这些函数:

[DllImport("dwmapi.dll")]
static extern void DwmExtendFrameIntoClientArea(IntPtr hWnd, ref Margins pMargins);


[StructLayout(LayoutKind.Sequential)]
struct Margins
{
    public int cxLeftWidth;
    public int cxRightWidth;
    public int cyTopHeight;
    public int cyBottomHeight;
}

然后您可以使用它将玻璃从窗口顶部“拉下”到客户区域:

GlassMargins.Top = 40;
GlassMargins.Left = 0;
GlassMargins.Right = 0;
GlassMargins.Bottom = 0;

DwmExtendFrameIntoClientArea(this.Handle, ref GlassMargins);

从这里,您可以继续执行其他操作,例如在玻璃上绘制文本或图像,或在其上放置控件,例如 Office 2007 样式的应用程序按钮。

This is done using interop with the Vista DWM (Desktop Window Manager) API.

For example, import these functions:

[DllImport("dwmapi.dll")]
static extern void DwmExtendFrameIntoClientArea(IntPtr hWnd, ref Margins pMargins);


[StructLayout(LayoutKind.Sequential)]
struct Margins
{
    public int cxLeftWidth;
    public int cxRightWidth;
    public int cyTopHeight;
    public int cyBottomHeight;
}

Then you can use this to "pull down" glass from the top of the window down into the client area:

GlassMargins.Top = 40;
GlassMargins.Left = 0;
GlassMargins.Right = 0;
GlassMargins.Bottom = 0;

DwmExtendFrameIntoClientArea(this.Handle, ref GlassMargins);

From here, you can go on and do other things, like draw text or images onto the glass, or put controls on it, such as a Office 2007 style application button.

诺曦 2024-07-30 11:03:35

Vista Aero 中的玻璃窗边框是使用 DWM 合成的。 这是操作系统级别的功能。 如果你在 Vista 上运行你的应用程序,你应该免费获得玻璃边框。

如果要将玻璃效果扩展到客户区域,请使用 DwmExtendFrameIntoClientArea,这就是 Internet Explorer 在其工具栏中的操作方式。 我怀疑您必须编写互操作来自己调用此本机函数(或检查 http://pinvoke.net )。

The glass window borders in Vista Aero are composited using the DWM. This is an OS-level feature. If you run your app on Vista, you should get the glass border for free.

If you want to extend the glass effect into the client area, use DwmExtendFrameIntoClientArea, which is how Internet Explorer does it in its toolbar. I suspect you'll have to write the interop to call this native function yourself (or check http://pinvoke.net).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文