Form中的圆角边缘

时间:2013-09-20 14:37:06

标签: c# winforms winapi

请告诉我如何制作带圆边的形状(Winforms。)找到这段代码,但它有问题。拖动形状时,绘制效果不佳。内部的一些控件也有绘画问题。

  [DllImport("Gdi32.dll")]
    public static extern IntPtr CreateRoundRectRgn(int nLeftRect,
                                                   int nTopRect,
                                                   int nRightRect,
                                                   int nBottomRect,
                                                   int nWidthEllipse,
                                                   int nHeightEllipse);
    [DllImport("user32.dll")]
    public static extern int SetWindowRgn(IntPtr hWnd, IntPtr hRgn, bool bRedraw);

    /// <summary>
    /// radius
    /// </summary>
    public int Radius = 0;

    public AfyForm()
    {
        InitializeComponent();
        min_max_closeEvents();
        borderEvents();

    }

min_max_closeEvents();             borderEvents(); - 边界绘画的方法

1 个答案:

答案 0 :(得分:1)

我认为如果您需要special in GUI,只需尝试转移到 WPF,您一定会喜欢它。对于简单的应用程序而不需要在GUI中进行太多自定义,您可以使用winforms,但无论如何转移到WPF是我们应该尽快做的事情。这是我最近才做过的代码。这个想法很简单。首先,我们创建Region rounded rectangle shape,然后将此区域分配给表单的Region属性。但是对于Draw边框,如果您创建类似的GraphicsPath并绘制或甚至填充它,则border看起来不会很好,因为它之间有一些gap最外边缘和GraphicsPath

以下是demo's link

enter image description here

enter image description here

enter image description here