c语言编程笔录

首页 >   > 笔记大全

笔记大全

C#创建不规则窗体的4种方式详解

更新时间:2023-12-04

前言:

不规则窗体是指在设计界面时,窗体的形状与一般的矩形窗体不同,可以是任意的形状,如圆形窗体、椭圆窗体、自定义的非矩形窗体等。在开发过程中,我们有多种方法可以创建不规则窗体,本文将详细介绍C#中创建不规则窗体的四种方式。

方式一:使用窗体背景透明实现

第一种方式是使用窗体的背景透明属性来实现。在这种方式中,我们需要将窗体的背景设置为透明,在通过继承窗体类并重写窗体的OnPaint方法,根据我们的需求绘制窗体的形状。

public partial class IrregularForm : Form
{
    public IrregularForm()
    {
        InitializeComponent();

        // 设置窗体为背景透明
        this.BackColor = Color.Transparent;
        this.TransparencyKey = Color.Transparent;
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        // 绘制窗体的形状
        GraphicsPath path = new GraphicsPath();
        path.AddEllipse(0, 0, this.Width, this.Height);
        this.Region = new Region(path);
    }
}

方式二:使用Region对象创建

第二种方式是使用Region对象来创建不规则窗体。在这种方式中,我们可以通过创建GraphicsPath对象并添加所需形状的路径,然后通过Region对象将其设置为窗体的区域。

public partial class IrregularForm : Form
{
    public IrregularForm()
    {
        InitializeComponent();

        // 创建GraphicsPath对象
        GraphicsPath path = new GraphicsPath();
        path.AddEllipse(0, 0, this.Width, this.Height);

        // 创建Region对象并设置窗体的区域
        this.Region = new Region(path);
    }
}

方式三:使用API函数实现

第三种方式是通过调用Windows API函数来实现不规则窗体。在这种方式中,我们可以使用GetWindowRgn函数获取窗体的区域,然后通过SetWindowRgn函数将获取到的区域设置为窗体的形状。

public partial class IrregularForm : Form
{
    [DllImport("user32.dll")]
    public static extern int SetWindowRgn(IntPtr hWnd, int hRgn, bool bRedraw);

    [DllImport("user32.dll")]
    public static extern int GetWindowRgn(IntPtr hWnd, IntPtr hRgn);

    public IrregularForm()
    {
        InitializeComponent();

        // 获取窗体的句柄
        IntPtr handle = this.Handle;

        // 创建GraphicsPath对象
        GraphicsPath path = new GraphicsPath();
        path.AddEllipse(0, 0, this.Width, this.Height);

        // 创建区域对象
        Region region = new Region(path);

        // 获取区域的句柄
        IntPtr regionHandle = region.GetHrgn(Graphics.FromHwnd(handle));

        // 设置窗体的区域
        SetWindowRgn(handle, regionHandle, true);
    }
}

方式四:使用WPF方式实现

第四种方式是使用WPF(Windows Presentation Foundation)方式来创建不规则窗体。在这种方式中,我们可以使用XAML标记语言来定义窗体的形状,并通过应用样式和模板的方式来设置窗体的外观。


    
        
    

总结:

通过以上四种方式,我们可以轻松地实现C#中不规则窗体的创建。无论是使用窗体背景透明、Region对象、API函数还是WPF方式,都可以根据我们的需求来定义窗体的形状,使窗体的外观更加独特和个性化。