编辑
2025-09-26
C#
00

目录

摘要
正文

摘要

在C# 绘制一个可拖拽的圆型窗体,需要用到以下方法与属性

方法:

  1. OnPaint(PaintEventArgs e):此方法用于自定义窗体的绘制。您可以在此方法中使用e.Graphics对象来执行自定义绘图操作。
  2. OnLoad(EventArgs e):在窗体加载时触发的事件,可用于执行初始化操作。
  3. OnMouseDown(MouseEventArgs e):在鼠标按下时触发的事件。通常用于实现拖动窗体的功能。
  4. OnMouseMove(MouseEventArgs e):在鼠标移动时触发的事件。通常用于处理拖动窗体的逻辑。
  5. OnMouseUp(MouseEventArgs e):在鼠标释放时触发的事件。通常用于处理拖动窗体的结束。

属性:

  1. FormBorderStyle:窗体的边框样式。您可以将其设置为None以创建无边框窗体。
  2. BackColor:窗体的背景颜色。
  3. Region:窗体的区域,可以用来定义窗体的形状。通常与GraphicsPath结合使用。
  4. Location:窗体在屏幕上的位置。通过设置此属性,可以移动窗体到不同的位置。
  5. Size:窗体的大小。
  6. WidthHeight:窗体的宽度和高度。
  7. DoubleBuffered:启用双缓冲以减少窗体绘制时的闪烁。
  8. Text:窗体的标题文本。
  9. TopMost:窗体是否显示在所有其他窗体的前面。

正文

image.png

C#
public partial class Form1 : Form { private Point offset; // 用于存储鼠标按下时的偏移量 private bool isDragging = false; // 用于跟踪是否正在拖动窗体 public Form1() { InitializeComponent(); this.FormBorderStyle = FormBorderStyle.None; this.Opacity= 0.8; this.DoubleBuffered = true; // 双缓冲以减少闪烁 // 鼠标按下事件处理 this.MouseDown += (sender, e) => { if (e.Button == MouseButtons.Left) { offset = e.Location; isDragging = true; } }; // 鼠标移动事件处理 this.MouseMove += (sender, e) => { if (isDragging) { // 移动窗体到新位置 Point newLocation = this.Location; newLocation.X += e.X - offset.X; newLocation.Y += e.Y - offset.Y; this.Location = newLocation; } }; // 鼠标释放事件处理 this.MouseUp += (sender, e) => { if (e.Button == MouseButtons.Left) { isDragging = false; } }; } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); GraphicsPath path = new GraphicsPath(); path.AddEllipse(0, 0, this.Width, this.Height); // 设置窗体的Region为圆形区域 this.Region = new Region(path); using (Pen borderPen = new Pen(Color.Red, 5)) // 定义边框宽度和颜色 { e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; // 启用抗锯齿 e.Graphics.DrawEllipse(borderPen, 2, 2, this.Width - 4, this.Height);ss } } }

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!