【问题标题】:C# How to draw circles from center of screen outwards dynamicllyC#如何动态地从屏幕中心向外绘制圆圈
【发布时间】:2018-11-07 18:00:07
【问题描述】:

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

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

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

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

C#、WinForms

【问题讨论】:

  • 您正在创建什么样的应用程序(WinForms、WPF 等)?
  • 对不起,应该提到,winforms
  • 阅读您的问题可能并不重要,因为您要求的是数学。我的错。
  • “屏幕”是什么意思?

标签: c# winforms draw geometry


【解决方案1】:

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

var Start = Height / 2 - NumberOfCircles * CircleSize;

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

PS:使用变量CircleSize作为圆圈的实际大小加上一些空格,在函数Draw中你可以管理圆圈的绘制位置

【讨论】:

  • 将尝试代码,我试图了解过程背后的数学
  • 这段代码基本上就是你在其他答案中评论的内容
【解决方案2】:

最后是非常简单的数学。假设

直径为 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 * (半径+缓冲区)/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)

...等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-08
    • 2015-10-20
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多