2012-04-06 95 views
0

我有一個流程佈局。裏面有大約900張桌子。每張桌子都疊在一起。我有一個滑塊來調整它們的大小,從而導致流佈局也調整大小。線性尺寸增加最終增加1更多有時

問題是,表應該線性調整大小。它們的基本尺寸是200x200。所以,當規模= 1.0,表的W和H是200

這是問題的一個例子:

enter image description here

我的問題是,當增量爲8,而不是9.什麼能我確定我的增長總是線性的嗎?

void LobbyTableManagaer::changeTableScale(double scale) 
    { 
     setTableScale(scale); 
    } 

    void LobbyTableManager::setTableScale(double scale) 
    { 
     scale += 0.3; 
     scale *= 2.0; 

     float scrollRel = m_vScroll->getRelativeValue(); 
     setScale(scale); 
     rescaleTables(); 
     resizeFlow(); 
    ... 



    double LobbyTableManager::getTableScale() const 
     { 
      return (getInnerWidth()/700.0) * getScale(); 
     } 

    void LobbyFilterManager::valueChanged(agui::Slider* source,int val) 
    { 
     if(source == m_magnifySlider) 
     { 

      DISPATCH_LOBBY_EVENT 
      { 
       (*it)->changeTableScale((double)val/source->getRange()); 
      } 
     } 
    } 

總之,我想確保該表始終由線性量增加。我無法理解爲什麼每幾次增量爲8,而不是9

感謝

回答

1

看看你的「200 X桌秤」的價值觀,它們是由約8.8往上走。所以當它被四捨五入到一個整數時,它將比前一個值大約80%的時間多9次,另外8次多於20%。

如果你真的需要增加每次相同的大小,你必須用整數做所有事情。否則,您必須調整您的比例更改,以便結果更接近9.0。

+0

有關如何使用整數可以實現的任何建議,因爲其他一些變量取決於雙倍因子? – jmasterx 2012-04-06 13:48:24