Как создать пользовательский элемент управления с закругленными углами?

Я пытаюсь создать пользовательский элемент управления с закругленными углами. Он не имеет фиксированного размера, но обычно его ширина не превышает 120 пикселей.

Мне нужно, чтобы пользовательский элемент управления и его содержимое (метка и таблица) имели закругленные края и были похожи на круглую рамку.

Я использовал этот код.

[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, // height of ellipse
        int nHeightEllipse // width of ellipse
    );

    public static System.Drawing.Region GetRoundedRegion(int controlWidth, int controlHeight)
    {
            return System.Drawing.Region.FromHrgn(CreateRoundRectRgn(0, 0, controlWidth - 5, controlHeight - 5, 20, 20));
    } 

Это дает элементу управления закругленные углы, но после того, как он запустился несколько раз, и я добавил несколько форм моего пользовательского элемента управления в форму, это вызовет утечку, и я получу белую коробку с красным крестом на моих пользовательских элементах управления.

Есть ли лучший способ сделать это?

Ответы на вопрос(3)

Ваш ответ на вопрос