C# 在C中创建圆边窗体#

C# 在C中创建圆边窗体#,c#,.net,winforms,gdi+,rounded-corners,C#,.net,Winforms,Gdi+,Rounded Corners,我从堆栈溢出中得到了这段代码,但是,这并没有产生一个清晰的窗口,而且最小化、最大化按钮没有正确显示。请更正代码。是否有任何库(dll)可以在C#中完成这项工作。您可以在这里找到有趣的讨论 或者,如果您没有较大的表单,您可以使用类似于此处的简单技巧 但是在WindowsForms中做好这项工作真的很难。因此,如果您可以选择,我强烈建议您使用WPF。尤其是我看到您担心渲染不完美。在表单上添加更多按钮,并编写代码以关闭、最大化等。您看到,表单的边缘在绘制时并不完美,这是主要问题。我同意Tigran的观

我从堆栈溢出中得到了这段代码,但是,这并没有产生一个清晰的窗口,而且最小化、最大化按钮没有正确显示。请更正代码。是否有任何库(dll)可以在C#中完成这项工作。

您可以在这里找到有趣的讨论

或者,如果您没有较大的表单,您可以使用类似于此处的简单技巧


但是在WindowsForms中做好这项工作真的很难。因此,如果您可以选择,我强烈建议您使用WPF。尤其是我看到您担心渲染不完美。

在表单上添加更多按钮,并编写代码以关闭、最大化等。您看到,表单的边缘在绘制时并不完美,这是主要问题。我同意Tigran的观点。这在WPF中是很平凡的。
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, // height of ellipse
    int nHeightEllipse // width of ellipse
);

    public Form1()
    {
        InitializeComponent();
        Region = System.Drawing.Region.FromHrgn(CreateRoundRectRgn(0, 0,Width-5, Height - 5, 20, 20));
    }