私は、JavaFXでConwayのGame of Lifeのグリッドベースの単純な変種を作っています。私はStackExchangeで見つけた例を使っています。問題は、その例のスケーリング方法が私にとってうまくいかないように見えるということです。この例では、グリッドの「サイズ」を選択することができます。つまり、グリッド内の各セルのサイズを決定するためにスケールが使用されます。ユーザーがウィンドウのサイズを変更した場合はキャンバスになります。2Dグリッドをキャンバスのサイズにスケールするにはどうすればよいですか?
これは、(0,0)と((xMax - 1)、(yMax - 1))を使って、左上と右下のセルを "塗り潰そう"ことでテストしました。しかし、右下のものは、キャンバスの境界から抜けるように見えます.YMaxから1を引いて表示する必要があります。ここで
は
private double getScaleFactor() {
return (canvas.getWidth() + canvas.getHeight())/(cellsWide + cellsHigh);
}
が、この方法に何か問題があります...私が使用している「倍率」の方法とは?私はGUIを構築している方法だろうか?キャンバスはBorderPaneの中心にバインドされ、上部にバインドされたHBoxと左側にバインドされたVBoxがあります。しかし、私はいつものように(幅/ 2)と(高さ/ 2)を使ってキャンバスの中心に物を描くことができたので、スケーリングファクタをどうやって得るのかが間違っています。
誰かが私を助けることができますか?
列と行の比率は常に同じですか?スケール係数は、行数と列数の両方に適用されますか? – Aderis
ディメンションをロックしてお互いが等しいようにするか、個々の値を選択するかの選択肢があります。はい、スケールは両方に適用されます。 –