关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

C# 画圆角矩形

发布时间:2019-12-03 11:05:12

protected void Page_Load(object sender, EventArgs e)

{

        Bitmap bm = new Bitmap(800, 600);

        Graphics g = Graphics.FromImage(bm);

        g.FillRectangle(Brushes.White,new Rectangle(0,0,800,600));

        FillRoundRectangle(g,Brushes.Plum,new Rectangle(100, 100, 100, 100), 8);

        DrawRoundRectangle(g, Pens.Yellow,new Rectangle(100, 100, 100, 100), 8);

        bm.Save(Response.OutputStream, ImageFormat.Jpeg);

        g.Dispose();

        bm.Dispose();

}

 public static void DrawRoundRectangle(Graphics g,Pen pen,Rectangle rect, int cornerRadius)

{

        using (GraphicsPath path = CreateRoundedRectanglePath(rect, cornerRadius))

        {

            g.DrawPath(pen, path);

        }

}

public static void FillRoundRectangle(Graphics g, Brush brush,Rectangle rect, int cornerRadius)

{

        using (GraphicsPath path = CreateRoundedRectanglePath(rect, cornerRadius))

        {

            g.FillPath(brush, path);

        }

}

internal static GraphicsPath CreateRoundedRectanglePath(Rectangle rect, int cornerRadius)

{

        GraphicsPath roundedRect = new GraphicsPath();

        roundedRect.AddArc(rect.X, rect.Y, cornerRadius * 2, cornerRadius * 2, 180, 90);

        roundedRect.AddLine(rect.X + cornerRadius, rect.Y, rect.Right - cornerRadius * 2, rect.Y);

        roundedRect.AddArc(rect.X + rect.Width - cornerRadius * 2, rect.Y, cornerRadius * 2, cornerRadius * 2, 270, 90);

        roundedRect.AddLine(rect.Right, rect.Y + cornerRadius * 2, rect.Right, rect.Y + rect.Height - cornerRadius * 2);

        roundedRect.AddArc(rect.X + rect.Width - cornerRadius * 2, rect.Y + rect.Height - cornerRadius * 2, cornerRadius * 2, cornerRadius * 2, 0, 90);

        roundedRect.AddLine(rect.Right - cornerRadius * 2, rect.Bottom, rect.X + cornerRadius * 2, rect.Bottom);

        roundedRect.AddArc(rect.X, rect.Bottom - cornerRadius * 2, cornerRadius * 2, cornerRadius * 2, 90, 90);

        roundedRect.AddLine(rect.X, rect.Bottom - cornerRadius * 2, rect.X, rect.Y + cornerRadius * 2);

        roundedRect.CloseFigure();



/template/Home/Zkeys/PC/Static