如果你希望你的绘图与窗口缩放比例,你会需要你的基地所有坐标关闭width
和height
变量。
例如,假设我画一个圆圈200x200
一个200x200
窗口内:
size(200, 200);
ellipse(100, 100, 200, 200);
如果我那么窗口的大小更改为400x400
,然后我不得不改变我的参数突入ellipse()
功能:
size(400, 400);
ellipse(200, 200, 400, 400);
这可能是恼人的(如您遇到),所以最好只是你的基础参数关闭width
和height
变量。这样,只要你的窗口大小发生变化,处理就会为你进行计算,并利用你的窗口缩放图形。
size(600, 600);
ellipse(width/2, height/2, width, height);
这仅仅是一个例子,但对你的过程将是相同的:去并修改每一个值是基于关闭width
和height
变量而不是硬编码的数字。
更多信息可以在这里找到:Using Variables - HappyCoding.io
(全面披露:我写的教程,但我认为这说明了你问什么有关)
编辑:你问起scale()
方法,所以我会在下面解释。但是如果你想把你的图画的大小放在窗口的大小上,那么你应该使用上面的方法!但由于这是一项家庭作业,你只能按照老师的说法进行。反正...
让我们看一个简单的程序:
size(100, 100);
ellipse(50, 50, 10, 10);
此代码只需创建一个100x100
大小的窗口,然后绘制在中心的小椭圆:
如果我们想让这个圆圈更大,我们可以使用scale()
函数。您可以将scale()
函数看作自动将您传递给绘图函数(如ellipse()
或rect()
)的每个参数乘以通过scale()
函数的任何数字。
例如,该代码由2
乘以每个数字:
size(100, 100);
scale(2);
ellipse(50, 50, 10, 10);
圆是现在的两倍,但它也不再是中心。这是因为我们也将50,50
(窗口的中心)乘以2
得到100,100
(窗口的右下角)。为了解决这个问题,我们要么需要改变50,50
:
size(100, 100);
scale(2);
ellipse(25, 25, 10, 10);
或者,我们可以使用translate()
功能之前移动坐标我们做规模:
size(100, 100);
translate(50, 50);
scale(2);
ellipse(0, 0, 10, 10);
无论哪种方式是好的,所以这真的取决于哪一个对你更有意义。现在我们有一个大的中心圈,尽管我们仍然将其大小设置为10,10
。
在未来,请提供[MCVE]的代码而不只是少数断开线路。现在很难确切地告诉你要问什么。 –