vtk -- 入门

vtk -- 入门

vtk
    视觉化工具函式库(VTK,Visualization Toolkit)是一个开放源码,跨平台、支援平行处理(VTK曾用于处理大小近乎1个Petabyte的资料,其平台为美国Los Alamos国家实验室所有的具1024个处理器之大型系统)的图形应用函式库。2005年实曾被美国陆军研究实验室用于即时模拟俄罗斯制反导弹战车ZSU23-4受到平面波攻击的情形,其计算节点高达2.5兆个之多。

介绍及使用:  http://www.cnblogs.com/buffer/archive/2009/03/13/1410235.html


结合Qt使用,部分代码示例(线图):(\vtk-5.6.1\GUISupport\Qt\Testing\CxxTestLineSeries.cxx)

     /**/ /* 曲线 */
    vtkQtChartWidget 
* chart  =   new  vtkQtChartWidget;
    vtkQtChartArea 
* area  =  chart -> getChartArea();
    vtkQtLineChart 
* line  =   new  vtkQtLineChart;

    area
-> addLayer(line);

    vtkQtChartLegend 
* legend  =   new  vtkQtChartLegend();
    vtkQtChartLegendManager 
* manager  =   new  vtkQtChartLegendManager(legend);
    manager
-> setChartLegend(legend);
    manager
-> setChartArea(area);
    chart
-> setLegend(legend);

    vtkQtChartMouseSelection 
* selector  =  vtkQtChartInteractorSetup::createDefault(area);
    vtkQtChartSeriesSelectionHandler 
* handler  =   new  vtkQtChartSeriesSelectionHandler(selector);
    handler
-> setModeNames( " Line Chart - Series " " Line Chart - Points " );
    handler
-> setMousePressModifiers(Qt::ControlModifier, Qt::ControlModifier);
    handler
-> setLayer(line);
    selector
-> addHandler(handler);
    selector
-> setSelectionMode( " Line Chart - Points " );
    vtkQtChartInteractorSetup::setupDefaultKeys(area
-> getInteractor());

    QStandardItemModel 
* model  =   new  QStandardItemModel( 3 2 );  model -> setItemPrototype( new  QStandardItem());
    model
-> setVerticalHeaderItem( 0 new  QStandardItem());
    model
-> setVerticalHeaderItem( 1 new  QStandardItem());
    model
-> setVerticalHeaderItem( 2 new  QStandardItem());
    model
-> verticalHeaderItem( 0 ) -> setData( 0.0 , Qt::DisplayRole);
    model
-> verticalHeaderItem( 1 ) -> setData( 1.0 , Qt::DisplayRole);
    model
-> verticalHeaderItem( 2 ) -> setData( 2.0 , Qt::DisplayRole);

    model
-> setHorizontalHeaderItem( 0 new  QStandardItem( " series 1 " ));
    model
-> setHorizontalHeaderItem( 1 new  QStandardItem( " series 2 " ));

    model
-> setItem( 0 0 new  QStandardItem());
    model
-> setItem( 1 0 new  QStandardItem());
    model
-> setItem( 2 0 new  QStandardItem());
    model
-> item( 0 0 ) -> setData( 0.5 , Qt::DisplayRole);
    model
-> item( 1 0 ) -> setData( 0.4 , Qt::DisplayRole);
    model
-> item( 2 0 ) -> setData( 0.6 , Qt::DisplayRole);

    model
-> setItem( 0 1 new  QStandardItem());
    model
-> setItem( 1 1 new  QStandardItem());
    model
-> setItem( 2 1 new  QStandardItem());
    model
-> item( 0 1 ) -> setData( 0.4 , Qt::DisplayRole);
    model
-> item( 1 1 ) -> setData( 0.5 , Qt::DisplayRole);
    model
-> item( 2 1 ) -> setData( 0.4 , Qt::DisplayRole);

    vtkQtChartTableSeriesModel 
* tableModel  =   new  vtkQtChartTableSeriesModel(model, line);
    line
-> setModel(tableModel);

    chart
-> show();

你可能感兴趣的:(vtk -- 入门)