winform自定义窗体: 最大化、最小化、关闭、窗体拖动、窗体圆角、

it2022-05-05  114

#region 窗体圆角的实现 private void Form1_Resize(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Normal) { SetWindowRegion(); } else { this.Region = null; } } public void SetWindowRegion() { System.Drawing.Drawing2D.GraphicsPath FormPath; FormPath = new System.Drawing.Drawing2D.GraphicsPath(); Rectangle rect = new Rectangle(0, 0, this.Width, this.Height); FormPath = GetRoundedRectPath(rect, 10); this.Region = new Region(FormPath); } /// <summary> /// /// </summary> /// <param name="rect">窗体大小</param> /// <param name="radius">圆角大小</param> /// <returns></returns> 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; } #endregion #region 窗体拖动 Point mouseOff; bool leftFlag=false; //第一步 private void Form1_MouseDown(object sender, MouseEventArgs e) { if (e.Button==MouseButtons.Left) { mouseOff = new Point(-e.X,-e.Y); leftFlag = true; } } //第二步 private void Form1_MouseMove(object sender, MouseEventArgs e) { if (leftFlag) { Point mouseSet = Control.MousePosition; mouseSet.Offset(mouseOff.X,mouseOff.Y); this.Location = mouseSet; } } //第三步 private void Form1_MouseUp(object sender, MouseEventArgs e) { if (leftFlag) { leftFlag = false; } } #endregion #region 最小化、最大化、关闭 private void Close_Click(object sender, EventArgs e) { this.Close(); } private void MaximumSize_Click(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Maximized) this.WindowState = FormWindowState.Normal; else this.WindowState = FormWindowState.Maximized; } private void MinimumSize_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized ; } #endregion

最新回复(0)