C# 如何动态地从屏幕中心向外画圆圈

C# How to draw circles from center of screen outwards dynamiclly

所以想法是这样的: 我有一个输入,当用户键入一个值时,我想在屏幕上画圆圈(见图)。

我希望圆圈从屏幕中间开始,如果用户键入另一个值以相应地重新绘制圆圈。

我知道如何画画,但我不太确定我想要实现的数学是如何完成的。

P.S。如果用户输入的数字多于适合屏幕的数字,我编写了代码来自动调整圆圈的大小,但如果他输入的数字少于该数字,我希望从中间向外绘制圆圈。

C#、WinForms

如果我没理解错的话,您正在寻找这样的东西:

var Start = Height / 2 - NumberOfCircles * CircleSize;

for (int i = 0; i < NumberOfCircles; i++)
{
    Draw(Start + (i * CircleSize));
}

PS: 使用变量CircleSize为圆的实际大小加上一些space,在函数Draw 你可以管理画圆的位置

归根结底,这是非常简单的数学运算。假设

直径为100像素

圆圈之间的缓冲区是半个半径(50像素)

屏幕宽度 为 800 像素

屏幕高度为600像素

--Initial position:

first position: (width / 2, height / 2 - (circles-1) * (diameter + buffer) / 2))

--All subsequent positions:

next position: (previousposition.x, previousposition.y + diameter+ buffer) 

如果您输入 1 个圈子,它将是:

圆 1: (400, 300 - (0 * (radius+buffer)/2 = (400, 300)

如果您输入 2 个圈子,它将是:

圆 1: (400, 300 - (1 * (radius+buffer)/2 = (400, 225), 圆 2: (400, 225 + 150) = (400, 375)

如果您输入 3 个圈子,则为:

圆 1: (400, 300 - 2*radius+buffer)/2 = (400, 150), 圆 2: (400, 150 + 150) = (400, 300), 圆 3: (400, 300 + 150) = (400, 450)

...等等。