using System.Drawing; using System.Drawing.Drawing2D; class GraphicsHelper { #region Drawing Rounded Rectangles /// <summary> /// Draw a rounded rectangle with the specified radius of the /// rounded corners /// </summary> /// <param name="pen"></param> /// <param name="left"></param> /// <param name="top"></param> /// <param name="width"></param> /// <param name="height"></param> /// <param name="radius">radius of the rounded corners</param> public static void _DrawRoundedRectangle(Graphics graphics, Pen pen, int left, int top, int width, int height, int radius) { using (GraphicsPath gp = new GraphicsPath()) { _AddRoundedRectPath(gp, left, top, width, height, radius); gp.CloseFigure(); graphics.DrawPath(pen, gp); } } /// <summary> /// Draw a filled rounded rectangle with the specified radius /// of the rounded corners /// </summary> /// <param name="brush"></param> /// <param name="left"></param> /// <param name="top"></param> /// <param name="width"></param> /// <param name="height"></param> /// <param name="radius">radius of the rounded corners</param> public static void FillRoundedRectangle(Graphics graphics, Brush brush, int left, int top, int width, int height, int radius) { using (GraphicsPath gp = new GraphicsPath()) { _AddRoundedRectPath(gp, left, top, width, height, radius); gp.CloseFigure(); graphics.FillPath(brush, gp); } } /// <summary> /// Add a rounded rectangle to the given graphics path with /// the specified radius of the rounded corners /// </summary> /// <param name="gp"></param> /// <param name="left"></param> /// <param name="top"></param> /// <param name="width"></param> /// <param name="height"></param> /// <param name="radius">radius of the rounded corners</param> private static void _AddRoundedRectPath(GraphicsPath gp, int left, int top, int width, int height, int radius) { // Top line gp.AddLine(left+radius, top, left+width-radius, top); // Top right arc gp.AddArc(left+width-radius, top, radius, radius, 270, 90); // Right hand side line gp.AddLine(left+width, top+radius, left+ width, top+height-radius); // Bottom right arc gp.AddArc(left+width-radius, top+height-radius, radius, radius, 0, 90); // Bottom line gp.AddLine(left+width-radius, top+height, left+radius, top+height); // Bottom left arc gp.AddArc(left, top+height-radius, radius, radius, 90, 90); // Left hand side line gp.AddLine(left, top+height-radius, left, top+radius); // Top left arc gp.AddArc(left, top, radius, radius, 180, 90); } #endregion Drawing Rounded Rectangles }
July 14, 2005
Drawing Rounded Rectangles
Based on some code from here
I tidied it up a bit.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment