using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Windows.Forms; namespace DynamicLink.Controls { static class RoundedRectangle { public static GraphicsPath GetPath(Rectangle r, int radius) { GraphicsPath path = new GraphicsPath(); int d = radius * 2; path.AddLine(r.Left + d, r.Top, r.Right - d, r.Top); path.AddArc(Rectangle.FromLTRB(r.Right - d, r.Top, r.Right, r.Top + d), -90, 90); path.AddLine(r.Right, r.Top + d, r.Right, r.Bottom - d); path.AddArc(Rectangle.FromLTRB(r.Right - d, r.Bottom - d, r.Right, r.Bottom), 0, 90); path.AddLine(r.Right - d, r.Bottom, r.Left + d, r.Bottom); path.AddArc(Rectangle.FromLTRB(r.Left, r.Bottom - d, r.Left + d, r.Bottom), 90, 90); path.AddLine(r.Left, r.Bottom - d, r.Left, r.Top + d); path.AddArc(Rectangle.FromLTRB(r.Left, r.Top, r.Left + d, r.Top + d), 180, 90); path.CloseFigure(); return path; } public static void FillRoundedRectangle(Graphics graphics, Rectangle rectangle, Brush brush, int radius) { if (graphics == null) throw new ArgumentNullException("graphics"); SmoothingMode mode = graphics.SmoothingMode; graphics.SmoothingMode = SmoothingMode.AntiAlias; using (GraphicsPath path = GetPath(rectangle, radius)) { graphics.FillPath(brush, path); } graphics.SmoothingMode = mode; } } }