请告诉我如何制作带圆边的形状(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(); - 边界绘画的方法
答案 0 :(得分:1)
我认为如果您需要special in GUI
,只需尝试转移到 WPF
,您一定会喜欢它。对于简单的应用程序而不需要在GUI中进行太多自定义,您可以使用winforms
,但无论如何转移到WPF
是我们应该尽快做的事情。这是我最近才做过的代码。这个想法很简单。首先,我们创建Region
rounded rectangle shape
,然后将此区域分配给表单的Region
属性。但是对于Draw
边框,如果您创建类似的GraphicsPath
并绘制或甚至填充它,则border
看起来不会很好,因为它之间有一些gap
最外边缘和GraphicsPath
。
以下是demo's link