- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想将图像的大小增加到 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% 或高于任何百分比时,它不会减小尺寸。任何帮助对我都非常有用。提前致谢
最佳答案
从您分享的内容中我看到两个问题:
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));
}
});
关于c++ - 如何设置正确的 vtkCamera 缩放系数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52293729/
我正在使用 vtkCamera 并且会尝试移动它并让它看向某个点。例如,如果我想将相机放在位置 (x,y,z) 并让它看 (0,0,0) 例如使用 gluLookAt在 openGL 中,我们会将眼睛
我想将图像的大小增加到 50%、100%、200%、400% 和 800%。为了缩放 DICOM 图像。为此,我将在查看器中使用 QComboBox,并将其索引设置为 (50,100,200,400,
我在原点有一个物体,我将相机移动到 (0,650,650) 并将焦点设置到原点,即: vtkSmartPointer cam = vtkSmartPointer::New(); renderer->S
本质上,我想使用 VTK 引擎来渲染具有预先计算的投影和模型 View 变换矩阵的场景,统称为“复合投影变换矩阵”。 出于此目的,我们有 vtkCamera.SetUseExplicitProject
我是一名优秀的程序员,十分优秀!