|
6#
楼主 |
发表于 2019-1-28 15:37:11
|
只看该作者
绘制圆角矩形:
- 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();
- return roundedRect;
- }
复制代码
|
|