C# 窗口窗体中的圆角

本文关键字:圆角 窗体 窗口 | 更新日期: 2023-09-27 18:31:22

我有一个没有边框的窗口。我在网上搜索圆角,但都有边框。如何制作表单(not with borders)的圆角?有没有办法做到这一点?

我是 c# 的新手,所以请解释一下...

谢谢

C# 窗口窗体中的圆角

试试这个:

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        [DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
        private static extern IntPtr CreateRoundRectRgn
        (
            int nLeftRect,     // x-coordinate of upper-left corner
            int nTopRect,      // y-coordinate of upper-left corner
            int nRightRect,    // x-coordinate of lower-right corner
            int nBottomRect,   // y-coordinate of lower-right corner
            int nWidthEllipse, // width of ellipse
            int nHeightEllipse // height of ellipse
        );
        public Form1()
        {
            InitializeComponent();
            this.FormBorderStyle = FormBorderStyle.None;
            Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(0, 0, Width, Height, 20, 20));
        }
    }
}

从这里开始: C# 中带有圆角边框的窗体?

区域属性只是切断了角落。要获得真正的圆角,您必须绘制圆角矩形。

绘制圆角矩形

绘制所需形状的图像并将其放在透明表单上可能更容易。更易于绘制,但无法调整大小。

还要检查这个 另一个

我找到了这段代码

为了提出圆角文本框,我开始尝试使用油漆覆盖事件,但不幸的是没有任何结果,这是因为(我假设)文本框派生自 Windows。因此,我尝试覆盖WM_PAINT API,这得到了预期的结果

http://www.codeproject.com/Articles/17453/Textbox-with-rounded-corners

谢谢