2012-05-17 92 views
1

如果給出動態數量的項目,我必須平分屏幕(儘可能)。根據項目數量和屏幕比例分割屏幕

所以我需要根據屏幕大小/比例找到列數和行數。

每個項目的大小並不重要,因爲我會根據每列和每行的項目計算它們的百分比。

如果我有5個項目,然後(取決於屏幕比例)我可能會有第1行3列和第2行2列。沒關係。

+1

究竟是什麼問題?如何確定一個方形網格來容納N個物品?對於N = 8,你更喜歡一個長方形的2x4網格恰好8,還是一個好的方形3x3網格有一個空的空間? –

回答

2

首先,您必須決定「平分屏幕」的含義。 這可能意味着每個項目都有一個首選的x-y比率。

您可以使用以下算法來減少空白空間的數量,從而有利於接近所需的x-y比率。

// Set this to the desired x-to-y ratio. 
const preferred_ratio = 1.2; 

function calc_cols_rows(In: screen, In: num_items, Out: num_rows, Out: num_cols) { 
    desired_aspect = (screen.width/screen.height)/preferred_ratio; 

    // Calculate the number of rows that is closest to the desired aspect: 
    num_rows = round(sqrt(num_items/desired_aspect)); 

    // Calculate the required number of columns: 
    num_cols = ceil(num_items/num_rows); 
} 
+1

詳細解釋:https://stackoverflow.com/a/2480939/2603925 –