2016-08-19 84 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

謝謝,你解釋得很好。 –

相關問題