C#中如何实现整个窗体的玻璃效果
2个回答
2013-04-28
展开全部
《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); } }
通过上面的代码,在重绘背景的时候清除原本要绘制的背景,将透明的窗体底层显示出来。
所以,要在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); } }
通过上面的代码,在重绘背景的时候清除原本要绘制的背景,将透明的窗体底层显示出来。
2013-04-28
展开全部
背景吧,网上有个这样的类,你找下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询