1. 程式人生 > >如何截取VTK中window的場景

如何截取VTK中window的場景

屏幕截取 vtkRenderWindow GetRGBAPixelData

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的場景