vtk vtkCamera Zoom调用次数多了,会恢复原来的大小
vtk吧
全部回复
仅看楼主
level 4
我缩放的时候为了使整体缩放,采用render中GetActiveCamera()->Zoom(1.5)的方式,可以将整个Render中的所有Actor缩放,但是如果我更改了一个Actor,每次需要重新调用Zoom,这样就造成了Zoom的多次调用,然后就出现缩放不再管用的问题。下面是例子代码:
void VtkCameraZoom()
{
vtkSmartPointer<vtkJPEGReader> reader =
vtkSmartPointer<vtkJPEGReader>::New();
reader->SetFileName ( "..\\data\\lena-gray.jpg" );
reader->Update();
vtkSmartPointer<vtkImageActor> originalActor =
vtkSmartPointer<vtkImageActor>::New();
originalActor->SetInputData(reader->GetOutput());
vtkSmartPointer<vtkRenderer> originalRenderer =
vtkSmartPointer<vtkRenderer>::New();
originalRenderer->AddActor(originalActor);
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(originalRenderer);
renderWindow->Render();
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
for(int nIndex = 0; nIndex < 100; nIndex++)
{
originalRenderer->ResetCamera();
originalRenderer->GetActiveCamera()->Zoom(1.5);
renderWindow->Render();
}
renderWindowInteractor->Initialize();
renderWindowInteractor->Start();
}
2016年08月18日 02点08分 1
level 12
这都能被你发现?
没测试过~~~~[哈哈]
2016年08月18日 03点08分 2
[泪],我能说其实我很不想发现么?我只是想让整体放大一下
2016年08月18日 06点08分
level 10
resetcamera是已经重新设置的意思吧
2016年08月18日 04点08分 3
非常谢谢提示[乖],解决了,只刷新窗口就能实现整体窗口放大,并且在放大过程中添加或者删除actor,只设置一次Zoom,相机的位置不改变,每次增加或者删除actor之后,刷新窗口即可。
2016年08月18日 06点08分
level 9
for(int nIndex = 0; nIndex < 100; nIndex++)
{
originalRenderer->ResetCamera();
originalRenderer->GetActiveCamera()->Zoom(1.5);
renderWindow->Render();
}
请问上面的语句是想干嘛呀?
循环的(自动定位相机+相机移动)?
2016年08月24日 11点08分 4
在模拟多次调用Zoom调整窗口大小,然后刷新显示。我实际的使用情况是需要改变整个render中的一个actor,然后再放大,然后刷新显示,这只是我找到的图像缩小的原因,让大家看情况的代码,没什么实际意义。
2016年08月25日 01点08分
level 6
大神 能问您一个问题吗?我用planewidget显示dicom图像的正交平面,矢状面和冠状面利用GetActiveCamera()->Zoom(1.5);放大都没有问题,可是横断面利用GetActiveCamera()->Zoom()图像就不见了,大神知道是怎么回事吗?在线等啊[泪][泪][泪]
2016年10月20日 06点10分 5
1