// Public members

        public override void PaintControl(ComboBox control, ControlPaintArgs e)
        {
            IRuleset ruleset = e.StyleSheet.GetRuleset(control);

            RenderUtilities.ApplyColorProperties(control, ruleset);

            Rectangle clientRect = control.ClientRectangle;

            e.PaintBackground();

            // Match the foreground bounds of the default control.
            // The text is cut off behind the drop-down arrow.

            Rectangle textRect = new Rectangle(clientRect.X + 1, clientRect.Y, clientRect.Width - 21, clientRect.Height);

            e.PaintText(textRect);

            PaintDropDownArrow(control, e);

            e.PaintBorder();
        }
        // Public members

        public override void PaintControl(Button control, ControlPaintArgs e)
        {
            TextFormatFlags textFormatFlags = ControlUtilities.GetTextFormatFlags(control.TextAlign);

            e.Clear();

            e.PaintBackground();

            if (control.Image != null)
            {
                const int horizontalPadding = 4;
                const int verticalPadding   = 4;

                Rectangle imageRect = new Rectangle(horizontalPadding, verticalPadding, control.Width - horizontalPadding * 2, control.Height - verticalPadding * 2);

                e.Graphics.DrawImage(control.Image, imageRect, control.ImageAlign);
            }

            e.PaintText(textFormatFlags);

            e.PaintBorder();
        }
        // Public members

        public override void PaintControl(Label control, ControlPaintArgs e)
        {
            e.PaintBackground();
            e.PaintText(ControlUtilities.GetTextFormatFlags(control.TextAlign) | TextFormatFlags.WordBreak);
            e.PaintBorder();
        }