Как создать пользовательский элемент управления с закругленными углами?
Я пытаюсь создать пользовательский элемент управления с закругленными углами. Он не имеет фиксированного размера, но обычно его ширина не превышает 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));
}
Это дает элементу управления закругленные углы, но после того, как он запустился несколько раз, и я добавил несколько форм моего пользовательского элемента управления в форму, это вызовет утечку, и я получу белую коробку с красным крестом на моих пользовательских элементах управления.
Есть ли лучший способ сделать это?