winform 边框圆角
时间: 2023-07-26 13:04:39 浏览: 107
在 WinForms 应用程序中,如果需要将窗体的边框变成圆角,可以通过以下步骤实现:
1. 打开窗体的设计视图,将窗体的 `FormBorderStyle` 属性设置为 `None`,这样窗体的边框就被隐藏了。
2. 在窗体的 `Load` 事件中,调用 `SetWindowRgn` 函数来设置窗体的圆角。具体实现如下:
```csharp
[DllImport("user32.dll")]
public static extern int SetWindowRgn(IntPtr hWnd, IntPtr hRgn, bool bRedraw);
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
// 获取窗体的句柄
IntPtr handle = this.Handle;
// 创建一个圆形区域
IntPtr region = CreateRoundRectRgn(0, 0, this.Width, this.Height, 20, 20);
// 设置窗体的圆角区域
SetWindowRgn(handle, region, true);
}
[DllImport("gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
public static extern IntPtr CreateRoundRectRgn(
int x1, int y1, int x2, int y2, int cx, int cy);
```
在上面的代码中,我们使用了 `CreateRoundRectRgn` 函数来创建一个圆形区域,然后调用 `SetWindowRgn` 函数来设置窗体的圆角区域。其中,`cx` 和 `cy` 参数指定了圆角的半径大小。这样,窗体的边框就变成了圆角的形状。
注意:在窗体关闭时,需要释放圆形区域的资源,否则会造成内存泄漏。具体实现如下:
```csharp
[DllImport("gdi32.dll")]
public static extern int DeleteObject(IntPtr obj);
protected override void OnFormClosed(FormClosedEventArgs e)
{
base.OnFormClosed(e);
// 释放圆形区域的资源
DeleteObject(region);
}
```
阅读全文