C# 窗口窗体中的圆角
本文关键字:圆角 窗体 窗口 | 更新日期: 2023-09-27 18:31:22
我有一个没有边框的窗口。我在网上搜索圆角,但都有边框。如何制作表单(not with borders)
的圆角?有没有办法做到这一点?
我是 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
谢谢