Пример #1
0
        protected override void OnPaint(PaintEventArgs e)
        {
            // Background
            e.Graphics.FillRectangle(SystemBrushes.Control, 2, 2, ClientRectangle.Width - 4, ClientRectangle.Height - 4);

            // Border

            /*
             * Borders drawing sequence:
             *
             # dark-dark
             # @ dark
             # L lightlight
             #
             # @ @@@@@@@@@@@@@@-1-@@@@@@@@@@@@@@@@@L
             # @                                   L
             # @  L LLLLLLLLLLL-5-LLLLLLLLLLLLLL#  L
             # @  L                             #  L
             |  |                             |  |
             | 2  6                             8  4
             |  |                             |  |
             | @  L                                L
             | @  #############-7-###############  L
             | @
             | LLLLLLLLLLLLLLLL-3-LLLLLLLLLLLLLLLLLL
             |
             */
            Rectangle rc = ClientRectangle;

            // Outer
            e.Graphics.DrawLine(SystemPens.ControlDark, rc.Left + 1, rc.Top + 0, rc.Right - 2, rc.Top + 0);               // 1
            e.Graphics.DrawLine(SystemPens.ControlDark, rc.Left + 0, rc.Top + 0, rc.Left + 0, rc.Bottom - 2);             // 2
            e.Graphics.DrawLine(SystemPens.ControlLightLight, rc.Left + 0, rc.Bottom - 1, rc.Right - 1, rc.Bottom - 1);   // 3
            e.Graphics.DrawLine(SystemPens.ControlLightLight, rc.Right - 1, rc.Top + 0, rc.Right - 1, rc.Bottom - 2);     // 4

            // Inner
            e.Graphics.DrawLine(SystemPens.ControlLightLight, rc.Left + 2, rc.Top + 1, rc.Right - 3, rc.Top + 1);               // 5
            e.Graphics.DrawLine(SystemPens.ControlLightLight, rc.Left + 1, rc.Top + 1, rc.Left + 1, rc.Bottom - 3);             // 6
            e.Graphics.DrawLine(SystemPens.ControlDarkDark, rc.Left + 1, rc.Bottom - 2, rc.Right - 2, rc.Bottom - 2);           // 7
            e.Graphics.DrawLine(SystemPens.ControlDarkDark, rc.Right - 2, rc.Top + 1, rc.Right - 2, rc.Bottom - 3);             // 8

            // Paint the grip
            _grip.OnPaint(e.Graphics);

            // Paint the title (if visisble)
            if (_rectTitle != Rectangle.Empty)
            {
                JetLinkLabel.DrawText(e.Graphics, Text, _rectTitle, Font, SystemColors.ControlText,
                                      DrawTextFormatFlags.DT_CENTER | DrawTextFormatFlags.DT_NOPREFIX | DrawTextFormatFlags.DT_SINGLELINE | DrawTextFormatFlags.DT_VCENTER);
            }

            // Paint the no-items-banner (if visisble)
            if (_rectNoItemsBanner != Rectangle.Empty)
            {
                JetLinkLabel.DrawText(e.Graphics, _sNoItemsBanner, _rectNoItemsBanner, _fontNoItemsBanner, SystemColors.ControlText,
                                      _dtfNoItemsBannerFormatFlags);
            }
        }