一起创业网-为互联网创业者服务

winform程序怎么绘制圆

在WinForms程序中绘制圆形,你可以使用`Graphics`类的`DrawEllipse`方法或者`GraphicsPath`类来创建一个圆形路径,然后将其设置为控件的`Region`属性。以下是两种常见的方法:

方法一:使用`Graphics`类的`DrawEllipse`方法

你可以在`Form`的`Paint`事件中绘制圆形。以下是一个示例代码:

```csharp

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{

// 创建一个圆形路径

System.Drawing.Drawing2D.GraphicsPath myPath = new System.Drawing.Drawing2D.GraphicsPath();

myPath.AddEllipse(0, 0, 1000, 1000); // 圆心在(0,0),直径为1000

// 设置控件的Region属性为圆形路径

this.Region = new System.Drawing.Region(myPath);

}

```

方法二:使用`GraphicsPath`和`PictureBox`

另一种方法是在`PictureBox`控件中绘制圆形,并将绘制的圆形保存为图像,然后将其赋值给`PictureBox`的`Image`属性。以下是一个示例代码:

```csharp

private void Form_Load(object sender, EventArgs e)

{

// 创建一个PictureBox控件

PictureBox pic = new PictureBox();

pic.Name = "pic1";

pic.Size = new System.Drawing.Size(17, 17);

// 绘制圆形并赋值给PictureBox的Image属性

pic.Image = GetRoundPic(Color.Red);

// 将PictureBox添加到窗体中

this.Controls.Add(pic);

}

///

/// 绘制圆形图,并赋值BackgroundImage

///

/// 圆形的颜色

/// 包含圆形的Bitmap图像

public Bitmap GetRoundPic(Color color)

{

Size size = new Size(16, 16);

Bitmap bitmap = new Bitmap(size.Width, size.Height);

using (Graphics g = Graphics.FromImage(bitmap))

{

using (Brush br = new SolidBrush(color))

{

g.SmoothingMode = SmoothingMode.AntiAlias;

g.FillEllipse(br, 0, 0, size.Width, size.Height);

}

}

return bitmap;

}

```

方法三:使用`Graphics.DrawEllipse`在`Panel`上绘制圆形

你还可以创建一个`Panel`控件,并在其`Paint`事件中绘制圆形。以下是一个示例代码:

```csharp

public class CircularProgressBar : Panel

{

private int _progressHeight = 100; // 圆形的高度

public CircularProgressBar()

{

this.Size = new Size(200, 200);

}

protected override void OnPaint(PaintEventArgs e)

{

base.OnPaint(e);

// 设置抗锯齿

e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;

// 绘制圆形背景

e.Graphics.FillEllipse(Brushes.LightGray, 0, 0, this.Width, this.Height);

// 绘制圆形进度条

int radius = this.Width / 2 - _progressHeight / 2;

e.Graphics.FillEllipse(Brushes.Blue, radius, radius, _progressHeight, _progressHeight);

}

}

```

总结

以上是三种在WinForms程序中绘制圆形的方法。你可以根据自己的需求选择合适的方法。如果需要在窗体上绘制一个简单的圆形,可以使用第一种方法。如果需要在控件上绘制一个圆形,可以使用第二种方法。如果需要绘制一个带有进度条的圆形,可以使用第三种方法。