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 类即可.
来源: http://www.bubuko.com/infodetail-2568034.html