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)
...等等。
所以想法是这样的: 我有一个输入,当用户键入一个值时,我想在屏幕上画圆圈(见图)。
我希望圆圈从屏幕中间开始,如果用户键入另一个值以相应地重新绘制圆圈。
我知道如何画画,但我不太确定我想要实现的数学是如何完成的。
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)
...等等。