C#中如何实现整个窗体的玻璃效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中如何实现整个窗体的玻璃效果相关的知识,希望对你有一定的参考价值。

《WPF揭秘》提供了一段代码,通过一个类GlassHelper封装了PInvoke过来的系统API。想看那段代码的猛击这里既然是系统API,当然就不只是WPF专用了。拆开了GlassHelper,主要内容就是两个PInvoke签名:DwmExtendFrameIntoClientArea控制窗体的玻璃效果,DwmIsCompositionEnabled检测系统的桌面组合功能是否打开。MARGINS是DwmExtendFrameIntoClintArea需要的参数结构,表达的是窗口四周的边框。实现全玻璃背景,其实就是将有玻璃效果的窗体边框向内扩展,当MARGINS足够大之后,就全变成玻璃状态了。
所以,要在Winform里实现玻璃效果,只要 protected override void OnLoad(EventArgs e) if (DwmIsCompositionEnabled()) margins = new MARGINS(); margins.Right = margins.Left = margins.Top = margins.Bottom = this.Width+this.Height; DwmExtendFrameIntoClientArea(this.Handle, ref margins); base.OnLoad(e);
以及

protected override void OnPaintBackground(PaintEventArgs e) base.OnPaintBackground(e); if (DwmIsCompositionEnabled()) e.Graphics.Clear(Color.Black);
通过上面的代码,在重绘背景的时候清除原本要绘制的背景,将透明的窗体底层显示出来。
参考技术A 背景吧,网上有个这样的类,你找下

以上是关于C#中如何实现整个窗体的玻璃效果的主要内容,如果未能解决你的问题,请参考以下文章

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

C#如何让控件一直在窗体中间显示

在C#中如何实现winform窗体的全屏截图功能

实现毛玻璃效果

WPF如何实现像概念版QQ那样的窗体翻转效果?

C#窗体全屏功能