1. 新建一个工程demo 2. 添加以下引用: [System.Runtime.InteropServices.DllImport("gdi32")]private static extern IntPtr BeginPath(IntPtr hdc);[System.Runtime.InteropServices.DllImport("gdi32")]private static extern int SetBkMode(IntPtr hdc,int nBkMode);const int TRANSPARENT = 1;[System.Runtime.InteropServices.DllImport("gdi32")]private static extern IntPtr EndPath(IntPtr hdc);[System.Runtime.InteropServices.DllImport("gdi32")]private static extern IntPtr PathToRegion(IntPtr hdc);[System.Runtime.InteropServices.DllImport("gdi32")]private static extern int Ellipse(IntPtr hdc, int X1,int Y1, int X2,int Y2);[System.Runtime.InteropServices.DllImport("user32")]private static extern IntPtr SetWindowRgn(IntPtr hwnd,IntPtr hRgn,bool bRedraw);[System.Runtime.InteropServices.DllImport("user32")]private static extern IntPtr GetDC(IntPtr hwnd); 2. 添加窗体的Load方法: private void 用获取路径的方法得到圆形窗体_Load(object sender, System.EventArgs e) ...{ IntPtr dc; IntPtr region; dc=GetDC(this.Handle); BeginPath(dc); //根据路径创建不规则窗体 SetBkMode(dc,TRANSPARENT); //设置为透明模式 Ellipse(dc,20,20,220,220); EndPath(dc); region=PathToRegion(dc); SetWindowRgn(this.Handle,region,true); } 4. 最后在添加一些函数和变量即可。 const int WM_NCHITTEST = 0x0084; const int HTCLIENT = 0x0001; const int HTCAPTION = 0x0002; protected override void WndProc(ref System.Windows.Forms.Message m) ...{ switch(m.Msg) ...{ case WM_NCHITTEST: base.WndProc(ref m); if (m.Result==(IntPtr)HTCLIENT) m.Result=(IntPtr)HTCAPTION; break; default: base.WndProc(ref m); break; } }