c++ - 查找 vtkImageData 来源和大小

标签 c++ vtk

我有一个带有 3 个视口(viewport)(3 个 vtkRenderer)的应用程序。在他们每个人之上,我都有一个 vtkImageReslice。这些 vtkImageReslice 可以缩放、移动、旋转等。

我的任务是在每个 vtkImageReslice 上画一条线(vtkLine 或其他东西)...我怎么知道每个 vtkRenderer 上 vtkImageReslice 的来源和大小?

了解 vtkRenderer 的来源和大小非常简单:

int* pOrigin = m_pRenderer->GetOrigin();
int* pSize = m_pRenderer->GetSize();
TRACE("Origin: %d.%d, Size: %d.%d\n", pOrigin[0], pOrigin[1], pSize[0], pSize[1]);

在 m_pRenderer 上,我有一个 m_pReslice (vtkImageReslice) ...我怎么知道 m_pReslice 的来源和大小以在其上画一条线?

我感谢每一个提示、建议、任何...

[稍后编辑] 我觉得我描述的不够好,所以我贴一张图片:

enter image description here 我唯一需要知道的是来自特定渲染器的图像数据的来源和大小……该图片可以移动、旋转、缩放等。

[更晚编辑] 我附上另一张图片来说明我正在尝试做的事情:

enter image description here

当我对 vtiImageActor 进行缩放时,水平绿线必须变宽:

enter image description here

最佳答案

您可能会想到小部件。有很多VTK Widgets

例如ImagePlaneWidget 管道

vtkImagePlaneWidget myWidget = vtkImagePlaneWidget.New();
myWidget.SetInput(myDicomImageReader.GetOutput());
myWidget.SetPlaneOrientationToYAxes();
myWidget.SetSliceIndex(mySliceIndexNumber);
myWidget.SetInteractor(myInteractor);
myWidget.GetPlaneProperty().SetColor(1.0,0.0,0.0);

vtkOutlineFilter outlineFilter = vtkOutlineFilter.New();
outlineFilter.SetInputConnection(myDicomImageReader.GetOutputPort());

vtkPolyDataMapper mapper = vtkPolyDataMapper.New();
mapper.SetInputConnection(outlineFilter.GetOutputPort();

vtkActor actor = vtkActor.New();
actor.SetMapper(mapper);

myImageViewer.GetRenderer().AddActor(actor);

RenderWindow.Render();
myWidget.On();

关于c++ - 查找 vtkImageData 来源和大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28277034/

相关文章:

c++ - 在没有忙等待的情况下等待多个信号量(C/C++ Linux)

python - vtk/python VTKFloatArray 元组和组件的 setter 不交换

python - 使用 pip 安装 Mayavi - 没有名为 vtk 的模块

c++ - vtk:建模示例不起作用(Delaunay3D、金融等)

c++ - 在 vtk 表面渲染输出中裁剪

python - 绘图 Material 结构 - Pymatgen

c++ - 添加公共(public)变量时崩溃

c++ - 有没有办法检查端口号的可用性?

c++ - 如何在没有外部库的情况下使用 C++03 约束执行基于正则表达式的字符串操作?

c++ - Twitter OAuth2 的 QNetworkRequest 返回禁止错误