49 lines
1.7 KiB
C#
49 lines
1.7 KiB
C#
|
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;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|