如何截取VTK中window的场景

时间:2021-10-20 02:45:27

标签:

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类即可。

如何截取VTK中window的场景