我想将图像尺寸增加到等于50%,100%,200%,400%和800%。为了缩放DICOM图像。为此,我将QComboBox放在查看器中,并将其索引设置为(50,100,200,400,800)。
从组合框中,我得到了需要增加的百分比的索引。 (示例-index(0)-50%,index(1)-100%....等等)。
我正在使用“ vtk(getActiveCamera())”根据所选索引增加图像的大小。
我遇到的问题是,当我将尺寸设置为最大200%时,它将被正确设置。但是,当我将大小增加到400%时,它将设置为200%+ 400%= 600%。显然,我只希望将大小设置为400%。
这是我的代码:
void ViewerManager::vtkZoomCaller(int index)
{
int i;
switch (index)
{
case 0:
//qDebug() << "hello50";
for (i = 0; i < NumberOfViewers; i++) {
viewerDerived[i]->GetRenderer()->GetActiveCamera()->Zoom(0.5);
}
break;
case 1:
//qDebug() << "hello100";
for (i = 0; i < NumberOfViewers; i++) {
viewerDerived[i]->GetRenderer()->GetActiveCamera()->Zoom(1);
}
break;
case 2:
//qDebug() << "hello200";
for (i = 0; i < NumberOfViewers; i++) {
viewerDerived[i]->GetRenderer()->GetActiveCamera()->Zoom(2);
}
break;
case 3:
//qDebug() << "hello400";
for (i = 0; i < NumberOfViewers; i++) {
viewerDerived[i]->GetRenderer()->GetActiveCamera()->Zoom(4);
}
break;
case 4:
//qDebug() << "hello800";
for (i = 0; i < NumberOfViewers; i++) {
viewerDerived[i]->GetRenderer()->GetActiveCamera()->Zoom(8);
}
break;
default:
break;
}
}
当我要选择200%之后的100%且高于任何百分比时,它不会减小尺寸。 任何帮助对我来说都是非常有用的。 预先感谢
答案 0 :(得分:0)
从您分享的内容中,我看到两个问题:
vtkCamera::Zoom
接受double
作为参数。
该代码中的冗余不是必需的。实际上,有一种使用QHash的更优雅的方法。
考虑到这一点,我已经准备好了可以尝试的示例:
QHash<int, double> hash;
auto *comboZoom = new QComboBox(this);
hash.insert(0, 0.5);
hash.insert(1, 1.0);
hash.insert(2, 2.0);
hash.insert(3, 4.0);
hash.insert(4, 8.0);
comboZoom->addItems(QStringList{"50%", "100%", "200%", "400%", "800%"});
connect(comboZoom, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [hash](int index){
for (int n = 0; n < numberOfViewers; n++) {
viewerDerived[n]->GetRenderer()->GetActiveCamera()->Zoom(hash.value(index));
}
});