我正在JavaFX中製作一個簡單的基於網格的康威生命遊戲變體,我使用的是我在StackExchange上找到的示例。問題是這個例子中的縮放方法似乎不適合我。在這個例子中,你可以選擇網格的「大小」,這意味着它由多少行/列組成,然後該比例應該確定該網格中每個單元格的大小,從而允許網格適合如果用戶調整窗口大小,則顯示畫布。我使用(0,0)和((xMax - 1),(yMax - 1))試圖「填充」左上角和右下角的單元格,測試了這一點。但是右下角的人似乎將剪輯畫出邊界,因爲我必須從yMax中減去1以上才能顯示出來。如何將2D網格縮放到畫布的大小?
這裏是「比例因子」的方法我用...
private double getScaleFactor() {
return (canvas.getWidth() + canvas.getHeight())/(cellsWide + cellsHigh);
}
這有什麼錯用這種方法?這可能是我構建GUI的方式嗎?畫布綁定到BorderPane的中心,並且HBox綁定到頂部,VBox綁定到左邊。不過,我已經能夠像平常一樣使用(width/2)和(height/2)在畫布的中心繪製東西,所以有些東西告訴我如何得到縮放因子是錯誤的。
有人可以幫我嗎?
行與列的比率是否始終相同?比例因子是否適用於行數和列數? – Aderis
有一個選項可以鎖定尺寸以便它們彼此相等,或者您可以選擇單個值。是的,這個比例適用於兩者。 –