private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
// 获取用户输入的圆形中心点坐标,半径,等分长度
double rx = Convert.ToDouble(textBox1.Text);
double ry = Convert.ToDouble(textBox2.Text);
double r = Convert.ToDouble(textBox3.Text);
double d = Convert.ToDouble(textBox4.Text);
// 创建绘图对象
Graphics g = e.Graphics;
g.Clear(Color.White);
// 获取坐标轴原点的坐标
double originX = this.ClientSize.Width / 2;
double originY = this.ClientSize.Height / 2;
// 绘制坐标轴
Pen axisPen = new Pen(Color.Black, 2);
g.DrawLine(axisPen, (float)originX, 0, (float)originX, this.ClientSize.Height);
g.DrawLine(axisPen, 0, (float)originY, this.ClientSize.Width, (float)originY);
// 计算圆形的点坐标
double angle = Math.PI * 2 * d / r; // 每个角度的大小
PointF[] pointF = new PointF[(int)(r / d)]; // 点数组
for (int i = 0; i < r / d; i++)
{
double x = r * Math.Cos(angle * i) + rx + originX; // 计算x坐标
double y = r * Math.Sin(angle * i) + rx + originY; // 计算y坐标
pointF[i] = new PointF((float)x, (float)y); // 将坐标保存到数组中
}
// 绘制圆形
Pen Pen = new Pen(Color.Red, 2);
g.DrawPolygon(Pen, pointF);
//保存数据到text文本文件中
using (StreamWriter writer = new StreamWriter("coordinates.txt"))
{
for (int i = 0; i < r / d; i++)
{
writer.WriteLine($"({r * Math.Cos(angle * i) + rx}, {r * Math.Sin(angle * i) + rx},{0})");
}
}
}
各位牛人帮忙看一下为什么这句 PointF[] pointF = new PointF[(int)(r / d)]; // 点数组,会显示算术运算导致溢出?该怎么改正较好?我是初学者,求各位牛人指点