2016-08-19 53 views
1

我将处理语言导入到Java中,并画了一个简单的房子。如何调整处理小程序中的图形大小?

像:

rect (75, 175, 350, 175); 

    // door 

    rect (225, 275, 50, 75); 

    // roof 
    triangle (250, 100, 75, 175, 425, 175); 

    // windows 
    rect (125, 200, 50, 50); 
    rect (325, 200, 50, 50); 

我希望能够调整图像大小,或缩放该图像当我改变窗口大小。现在窗口大小只有500乘500,但如果我扩大窗口,它不会扩大绘图。

我尝试使用scale(),但由于某种原因,它缩放图像为毫秒,然后恢复为未缩放版本。我的java老师告诉我处理刷新方法每秒刷新60次,但我不明白为什么它会和第一次不一样。

+0

在未来,请提供[MCVE]的代码而不只是少数断开线路。现在很难确切地告诉你要问什么。 –

回答

0

如果你希望你的绘图与窗口缩放比例,你会需要你的基地所有坐标关闭widthheight变量。

例如,假设我画一个圆圈200x200一个200x200窗口内:

size(200, 200); 
ellipse(100, 100, 200, 200); 

如果我那么窗口的大小更改为400x400,然后我不得不改变我的参数突入ellipse()功能:

size(400, 400); 
ellipse(200, 200, 400, 400); 

这可能是恼人的(如您遇到),所以最好只是你的基础参数关闭widthheight变量。这样,只要你的窗口大小发生变化,处理就会为你进行计算,并利用你的窗口缩放图形。

size(600, 600); 
ellipse(width/2, height/2, width, height); 

这仅仅是一个例子,但对你的过程将是相同的:去并修改每一个值是基于关闭widthheight变量而不是硬编码的数字。

更多信息可以在这里找到:Using Variables - HappyCoding.io

(全面披露:我写的教程,但我认为这说明了你问什么有关)

编辑:你问起scale()方法,所以我会在下面解释。但是如果你想把你的图画的大小放在窗口的大小上,那么你应该使用上面的方法!但由于这是一项家庭作业,你只能按照老师的说法进行。反正...

让我们看一个简单的程序:

size(100, 100); 
ellipse(50, 50, 10, 10); 

此代码只需创建一个100x100大小的窗口,然后绘制在中心的小椭圆:

small circle

如果我们想让这个圆圈更大,我们可以使用scale()函数。您可以将scale()函数看作自动将您传递给绘图函数(如ellipse()rect())的每个参数乘以通过scale()函数的任何数字。

例如,该代码由2乘以每个数字:

size(100, 100); 
scale(2); 
ellipse(50, 50, 10, 10); 

big off-center circle

圆是现在的两倍,但它也不再是中心。这是因为我们也将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

big centered circle

+0

嗨凯文,我知道如何做到这一点,但这不是我的老师所要求的。我的老师告诉我们在处理库中使用一种方法,并且我发现它实际上是scale()方法。您必须设置浮动并将图纸缩放到浮标上。不管怎么说,多谢拉! –

+0

@LarryJing我编辑了我的答案,以包含有关'scale()'函数的信息。 –

+0

谢谢,你解释得很好。 –

相关问题