已知圆心和半径手绘一个圆形-C#/WF

前言

需求如下:已知圆点和半径画出一个从特定角度到特定角度的圆弧线条。类似于常见的圆环图,当需要高度自定义时我们就不能借助系统自带的绘制圆形的方法了,所以还是要靠自己,不过坐标的计算公式对我来说有些难度,如果不懂直接拿来套用即可。

知识补充

求圆上点的坐标需要已知的条件:圆心、半径、角度

假设圆心:o (x0,y0)

半径:r

角度:angle (角度是相对于中红点位置而言,逆时针为负数,顺时针为正)

计算公式:

1
2
3
p2 (x1,y1), 其中angle = 30
x1 = x0 + r * cos(angle * PI / 180)
y1 = y0 + r * sin(angle * PI /180)

绘制圆

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//手绘一个圆
private void BtnDraw_Click(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(this.pictureBox.Width, this.pictureBox.Height);
Graphics graphics = Graphics.FromImage(bitmap);
//中心点(圆点)
int centerX = bitmap.Width / 2;
int centerY = bitmap.Height / 2;

//半径
int R = 100;

//开始绘制圆形(通过角度计算到圆点上的坐标并绘制一个点,并依次从0度画到360度最终形成圆形)

for (int i = 0; i < 360; i++)
{
//根据圆点和半径计算i度的坐标点。
double x = centerX + R * Math.Cos(i * Math.PI / 180);
double y = centerY + R * Math.Sin(i * Math.PI / 180);
//根据坐标将内容绘制出来
graphics.DrawString(".", new Font("微软雅黑", 5), solidBrush, new PointF((float)x, (float)y));
}
this.pictureBox.Image = bitmap;
}

Demo下载

点击下载Demo