Blame mono/Diagram/Shapes.cs

8cb222
using System;
8cb222
using System.Drawing;
8cb222
8cb222
namespace Diagram {
8cb222
    public class Shapes {
8cb222
        public static void drawRoundRect(Graphics g, RectangleF rect, float radius, Pen pen, Brush brush) {
8cb222
            radius = Math.Min(radius, 0.5f*rect.Width);
8cb222
            radius = Math.Min(radius, 0.5f*rect.Height);
8cb222
            float d = 2f*radius;
8cb222
8cb222
            g.FillPie(brush, rect.Left,    rect.Top,      d, d, -180f, 90f);
8cb222
            g.FillPie(brush, rect.Right-d, rect.Top,      d, d,  -90f, 90f);
8cb222
            g.FillPie(brush, rect.Right-d, rect.Bottom-d, d, d,    0f, 90f);
8cb222
            g.FillPie(brush, rect.Left,    rect.Bottom-d, d, d,   90f, 90f);
8cb222
            g.FillRectangle(brush, rect.Left+radius, rect.Top, rect.Width-d, rect.Height);
8cb222
            g.FillRectangle(brush, rect.Left, rect.Top+radius, rect.Width, rect.Height-d);
8cb222
8cb222
            g.DrawArc(pen, rect.Left,    rect.Top,      d, d, -180f, 90f);
8cb222
            g.DrawArc(pen, rect.Right-d, rect.Top,      d, d,  -90f, 90f);
8cb222
            g.DrawArc(pen, rect.Right-d, rect.Bottom-d, d, d,    0f, 90f);
8cb222
            g.DrawArc(pen, rect.Left,    rect.Bottom-d, d, d,   90f, 90f);
8cb222
            g.DrawLine(pen, rect.Left+radius, rect.Top, rect.Right-radius, rect.Top);
8cb222
            g.DrawLine(pen, rect.Left+radius, rect.Bottom, rect.Right-radius, rect.Bottom);
8cb222
            g.DrawLine(pen, rect.Left, rect.Top+radius, rect.Left, rect.Bottom-radius);
8cb222
            g.DrawLine(pen, rect.Right, rect.Top+radius, rect.Right, rect.Bottom-radius);
8cb222
        }
8cb222
    }
8cb222
}
8cb222