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();
 }