private void GlassifyForm(Form form, Graphics g = null) { if (!(DesktopWindowManager.IsCompositionEnabled() && GetGlassEnabled(form)) && !form.IsDesignMode()) return; if (g == null) g = form.CreateGraphics(); GlassFormProperties prop; if (!formProps.TryGetValue(form, out prop)) return; // Paint the glass effect. if (prop.GlassMargins == new Padding(-1)) g.FillRectangle(Brushes.Black, form.ClientRectangle); else { Region r = new Region(form.ClientRectangle); r.Exclude(GetNonGlassArea(form, prop)); g.FillRegion(Brushes.Black, r); } if (!form.IsDesignMode()) form.ExtendFrameIntoClientArea(prop.GlassMargins); }
/// <summary> /// Sets the glass margins. /// </summary> /// <param name="form">The <see cref="System.Windows.Forms.Form"/> to be extended.</param> /// <param name="value">The margins where the glass will be extended.</param> public void SetGlassMargins(Form form, Padding value) { GlassFormProperties prop = GetFormProperties(form); if (value == null || value == Padding.Empty) { prop.GlassMargins = Padding.Empty; UnhookForm(form); } else { prop.GlassMargins = value; form.Paint += new PaintEventHandler(form_Paint); if (!form.IsDesignMode()) { form.MouseDown += new MouseEventHandler(form_MouseDown); form.MouseMove += new MouseEventHandler(form_MouseMove); form.MouseUp += new MouseEventHandler(form_MouseUp); form.Resize += new EventHandler(form_Resize); form.Shown += new EventHandler(form_Shown); } } form.Invalidate(); }