vtk的vtkRenderWindowInteractor中的Initialize函数初始化了可交互的窗口,但是实际工程中,往往需要把窗口拿出来在别的页面上显示,如存为png图片等等。具体方法可看vtkRenderWindow类介绍。
本文主要介绍如何截取当前窗口的画面。

//renWin:当前活动窗口;//pdata:截图后返回的数据指针,RGBA,32位,存储格式为RGBARGBA....//maxlen: 防止pdata开辟的空间不够bool GetOutput(vtkRenderWindow *renWin,unsigned char* pdata, int maxlen){ int w = renWin->GetSize()[0]; int h = renWin->GetSize()[1]; if (maxlen<w*h * 4) return false; vtkSmartPointer<vtkUnsignedCharArray> pixels = vtkSmartPointer<vtkUnsignedCharArray>::New(); pixels->SetArray(pdata, w*h * 4, 1); renWin->GetRGBACharPixelData(0, 0, h - 1, w - 1, 1, pixels); return true;}

通过上述代码可以截取所需窗口的当前场景,除此方式外,也可以存为png格式只需调用vtk的png类即可。