0

我有一个流程布局。在里面我有大约 900 张桌子。每张桌子都堆叠在一起。我有一个滑块可以调整它们的大小,从而导致流布局也调整大小。

问题是,表格应该线性调整大小。它们的基本尺寸为 200x200。所以当 scale = 1.0 时,表格的 w 和 h 为 200。

这是问题的一个例子:

在此处输入图像描述

我的问题是当 delta 是 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());
            }
        }
    }

简而言之,我想确保表格总是线性增加。我不明白为什么每隔几次 delta 是 8 而不是 9。

谢谢

4

1 回答 1

1

看看你的“200 X Table Scale”值,它们上升了大约 8.8。所以当它被四舍五入为整数时,大约 80% 的时间它会比前一个值多 9,而其他 20% 的时间会多 8。

如果你真的需要每次都增加相同的大小,你必须用整数做所有事情。否则,您必须调整比例更改,以使结果更接近 9.0。

于 2012-04-06T13:38:47.973 回答