CustomChrome.VisualStudioFormChrome._formChrome_NonClientAreaPaint C# (CSharp) Method

_formChrome_NonClientAreaPaint() private method

private _formChrome_NonClientAreaPaint ( object sender, NonClientPaintEventArgs e ) : void
sender object
e NonClientPaintEventArgs
return void
        void _formChrome_NonClientAreaPaint(object sender, NonClientPaintEventArgs e)
        {
            var border = _formChrome.AdjustedResizeBorderThickness;

            if (border != _lastBorder)
            {
                _lastBorder = border;
                _dropShadowManager.Synchronize();
            }

            UpdateBorderColor();

            e.Graphics.Clear(SystemColors.Control);

            var state = new ButtonStates(this);

            if (state.Close.Draw)
                DrawButton(e.Graphics, state.Close, e.IsMaximized);
            if (state.MaximizeRestore.Draw)
                DrawButton(e.Graphics, state.MaximizeRestore, e.IsMaximized);
            if (state.Minimize.Draw)
                DrawButton(e.Graphics, state.Minimize, e.IsMaximized);

            foreach (var extraButton in state.ExtraButtons)
            {
                DrawButton(e.Graphics, extraButton);
            }

            int leftOffset = IconOffset.X + border.Left;

            if (state.DrawIcon)
            {
                e.Graphics.DrawImage(
                    GetFormIcon(),
                    leftOffset,
                    IconOffset.Y + border.Top
                );

                leftOffset += IconSize.Width;
            }

            leftOffset += TextOffset.X;

            var textBounds = new Rectangle(
                leftOffset,
                TextOffset.Y + border.Top,
                state.RightOffset - leftOffset,
                int.MaxValue
            );

            TextRenderer.DrawText(
                e.Graphics,
                Form.Text,
                SystemFonts.MessageBoxFont,
                textBounds,
                SystemColors.ControlDarkDark,
                SystemColors.Control,
                TextFormatFlags.NoPrefix | TextFormatFlags.SingleLine | TextFormatFlags.EndEllipsis
            );
        }