我有一个流程布局。在里面我有大约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。
由于
答案 0 :(得分:1)
查看“200 X Table Scale”值,它们上升了约8.8。因此,当它四舍五入为整数时,它将比前一个值大约80%的时间增加9个,而另外20%的时间则增加8个。
如果你真的需要每次增加相同的大小,你必须用整数做所有事情。否则,您必须调整比例更改,以使结果更接近9.0。