如何使用C#绘制一个圆角窗体
时间: 2023-07-20 17:09:26 浏览: 69
您可以使用C#的Graphics类来绘制一个圆角窗体,以下是一个简单的示例代码:
```csharp
using System;
using System.Drawing;
using System.Windows.Forms;
public partial class RoundForm : Form
{
public RoundForm()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None;
this.BackColor = Color.White;
this.DoubleBuffered = true;
this.SetStyle(ControlStyles.ResizeRedraw, true);
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics graphics = e.Graphics;
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
Rectangle rectangle = this.ClientRectangle;
rectangle.Width--;
rectangle.Height--;
graphics.DrawRoundRectangle(new Pen(Color.Gray), rectangle, 20);
}
}
public static class GraphicsExtensions
{
public static void DrawRoundRectangle(this Graphics graphics, Pen pen, Rectangle rectangle, int radius)
{
GraphicsPath path = new GraphicsPath();
path.AddLine(rectangle.Left + radius, rectangle.Top, rectangle.Right - radius, rectangle.Top);
path.AddArc(rectangle.Right - radius, rectangle.Top, radius, radius, 270, 90);
path.AddLine(rectangle.Right, rectangle.Top + radius, rectangle.Right, rectangle.Bottom - radius);
path.AddArc(rectangle.Right - radius, rectangle.Bottom - radius, radius, radius, 0, 90);
path.AddLine(rectangle.Right - radius, rectangle.Bottom, rectangle.Left + radius, rectangle.Bottom);
path.AddArc(rectangle.Left, rectangle.Bottom - radius, radius, radius, 90, 90);
path.AddLine(rectangle.Left, rectangle.Bottom - radius, rectangle.Left, rectangle.Top + radius);
path.AddArc(rectangle.Left, rectangle.Top, radius, radius, 180, 90);
path.CloseFigure();
graphics.DrawPath(pen, path);
}
}
```
这个示例使用了一个自定义的GraphicsExtensions类,其中包含了一个绘制圆角矩形的方法。在RoundForm类的OnPaint方法中,我们使用该方法绘制了一个圆角矩形作为窗体的边框。