Winform窗体缺少左上角效果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public void SetWindowRegion() { System.Drawing.Drawing2D.GraphicsPath FormPath; FormPath = new System.Drawing.Drawing2D.GraphicsPath(); Rectangle rect = new Rectangle(0, 0, this.Width, this.Height); int diameter = 20; FormPath .AddRectangle(new Rectangle(rect.Location.X + diameter, rect.Location.Y, rect.Width - diameter, rect.Height)); FormPath .AddRectangle(new Rectangle(rect.Location.X, rect.Location.Y + diameter, diameter, rect.Height - diameter)); path.CloseFigure(); this.Region = new Region(FormPath); } protected override void OnResize(System.EventArgs e) { this.Region = null; SetWindowRegion(); }
参考:Winform窗体四圆角效果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
public void SetWindowRegion() { System.Drawing.Drawing2D.GraphicsPath FormPath; FormPath = new System.Drawing.Drawing2D.GraphicsPath(); Rectangle rect = new Rectangle(0, 22, this.Width, this.Height - 22);//this.Left-10,this.Top-10,this.Width-10,this.Height-10); FormPath = GetRoundedRectPath(rect, 30); this.Region = new Region(FormPath); } private GraphicsPath GetRoundedRectPath(Rectangle rect, int radius) { int diameter = radius; Rectangle arcRect = new Rectangle(rect.Location, new Size(diameter, diameter)); GraphicsPath path = new GraphicsPath(); // 左上角 path.AddArc(arcRect, 180, 90); // 右上角 arcRect.X = rect.Right - diameter; path.AddArc(arcRect, 270, 90); // 右下角 arcRect.Y = rect.Bottom - diameter; path.AddArc(arcRect, 0, 90); // 左下角 arcRect.X = rect.Left; path.AddArc(arcRect, 90, 90); path.CloseFigure(); return path; } protected override void OnResize(System.EventArgs e) { this.Region = null; SetWindowRegion(); }