2012-04-06 10 views
0

私はフローレイアウトを持っています。その中には約900のテーブルがあります。各テーブルは、互いに積み重ねられています。私はそれらをサイズ変更するスライダを持っているので、フローレイアウトのサイズも変更されます。線形サイズの増加が1回以上増加することがあります。

問題は、表がリニアにサイズ変更されることです。ベースサイズは200x200です。だから、テーブルのwとhは、ここでは200

は、問題の例は、規模= 1.0である場合:

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()); 
      } 
     } 
    } 

要するに、テーブルが常に直線的に増加するようにしたいと思います。私はすべての数回のデルタは、あなたの「200 X表スケール」の値ではなく8 9

おかげ

答えて

1

見て、なぜ、彼らは約8.8で上がっている理解して傾けます。したがって、整数に丸められた場合、それは時間の約80%前の値よりも9倍多く、時間の残りの20%は8倍になります。

毎回同じサイズにする必要がある場合は、すべてを整数で行う必要があります。それ以外の場合は、結果が9.0に近づくように縮尺を変更する必要があります。

+0

倍精度浮動小数点数型(double scale factor)に依存するいくつかの変数があることを考えれば、どのように整数で行うことができますか? – jmasterx

関連する問題