所以这个想法是这样的: 我有一个输入,当用户输入一个值时,我想在屏幕上绘制圆圈(参见图片)。
我希望圆圈从屏幕中间开始,并且如果用户键入另一个值来相应地绘制圆圈。
我知道如何绘制,但是我不确定我要实现的数学是如何完成的。
P.S。如果用户输入的数字大于适合屏幕的数字,我编写了自动调整圆圈大小的代码,但是如果用户输入的数字小于该数字,我希望从中向外绘制圆圈。
C#,WinForms
答案 0 :(得分:1)
如果我理解正确,那么您正在寻找这样的东西:
var Start = Height / 2 - NumberOfCircles * CircleSize;
for (int i = 0; i < NumberOfCircles; i++)
{
Draw(Start + (i * CircleSize));
}
PS::将变量CircleSize
用作圆的实际大小以及一些空间,在函数Draw
中,您可以管理圆的位置绘制
答案 1 :(得分:1)
最后这是非常简单的数学。假设
直径是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/2 =(400,300)
如果您输入2个圆圈,则为:
圆1:(400,300-(1 *(radius + buffer)/ 2)=(400,225),圆2:(400,225 + 150)=(400,375)
如果输入3个圆圈,则为:
圆1:(400,300-2 *半径+缓冲区)/ 2 =(400,150),圆2:(400,150 + 150) =(400,300),第3圈:(400,300 + 150)=(400,450)
...等等。