public virtual void DrawButton(Graphics surface, DropDownButtonRenderingArgs args, PushButtonState state)
        {
            surface.SmoothingMode = SmoothingMode.HighQuality;
            surface.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
            surface.PixelOffsetMode = PixelOffsetMode.HighQuality;
            surface.InterpolationMode = InterpolationMode.HighQualityBicubic;
            surface.CompositingQuality = CompositingQuality.HighQuality;
            if (args.Image == null)
            { ButtonRenderer.DrawButton(surface, args.Bounds, args.Focused, state); }
            else
            { ButtonRenderer.DrawButton(surface, args.Bounds, args.Image, args.ImageBounds, args.Focused, state); }

            if (state == PushButtonState.Disabled)
            {
                TextRenderer.DrawText(surface, args.Text, args.Font, args.Bounds, SystemColors.GrayText, args.BackColor, args.TextFormatFlags);
            }
            else
            {
                TextRenderer.DrawText(surface, args.Text, args.Font, args.Bounds, args.ForeColor, args.BackColor, args.TextFormatFlags);
            }
        }
 public virtual void DrawDropDownButton(Graphics surface, DropDownButtonRenderingArgs args, PushButtonState state)
 {
     DrawButton(surface, args, state);
     DrawArrow(surface, args, state);
 }
 public virtual void DrawArrow(Graphics surface, DropDownButtonRenderingArgs args, PushButtonState state)
 {
     surface.SmoothingMode = SmoothingMode.HighQuality;
     surface.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
     surface.PixelOffsetMode = PixelOffsetMode.HighQuality;
     surface.InterpolationMode = InterpolationMode.HighQualityBicubic;
     surface.CompositingQuality = CompositingQuality.HighQuality;
     PointF center = new PointF(Convert.ToSingle(args.Bounds.Width / 2) + args.Bounds.X, Convert.ToSingle(args.Bounds.Height / 2) + args.Bounds.Y);
     PointF[] pts = new PointF[] { new PointF(center.X - 3, center.Y), new PointF(center.X + 2, center.Y), new PointF(center.X, center.Y + 3) };
     if (state == PushButtonState.Disabled)
     {
         surface.FillPolygon(Brushes.DarkGray, pts);
         surface.DrawPolygon(Pens.LightGray, pts);
     }
     else
     {
         surface.FillPolygon(Brushes.Black, pts);
         surface.DrawPolygon(Pens.DimGray, pts);
     }
 }