VTK 圖像畫布

 

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
#include <vtkSmartPointer.h>

class vtkRenderer;
class vtkImageCanvasSource2D;
class vtkImageData;
class vtkImageViewer2;

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    vtkSmartPointer<vtkRenderer>            pRenderer;
    vtkSmartPointer<vtkImageViewer2>        pImageViewer;
    vtkSmartPointer<vtkImageCanvasSource2D> pImageCanvas;

//    vtkSmartPointer<vtkRenderer>            pRenderer2;
//    vtkSmartPointer<vtkImageData>           pImageData;
//    vtkSmartPointer<vtkImageViewer2>        pImageViewer2;

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

 

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <vtkRenderer.h>
#include <vtkImageViewer2.h>
#include <vtkImageCanvasSource2D.h>
#include <vtkImageActor.h>
#include <vtkRenderWindow.h>
#include <vtkImageData.h>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    pImageCanvas = vtkSmartPointer<vtkImageCanvasSource2D>::New();
    pImageCanvas->SetScalarTypeToUnsignedChar();
    pImageCanvas->SetNumberOfScalarComponents(4);
    pImageCanvas->SetExtent(0, 100,0, 100, 0, 0);

    pImageCanvas->SetDrawColor(0, 0, 0, 0);
    pImageCanvas->FillBox(0,100,0,100);

    pImageCanvas->SetDrawColor(255, 0, 0, 0);
    pImageCanvas->FillBox(20,40,20,40);

    pRenderer    = vtkSmartPointer<vtkRenderer>::New();
    pRenderer->SetBackground(1.0, 0, 0);

    ui->qvtkWidget->GetRenderWindow()->AddRenderer(pRenderer);

    pImageViewer = vtkSmartPointer<vtkImageViewer2>::New();
    pImageViewer->SetInputConnection(pImageCanvas->GetOutputPort());
    pImageViewer->UpdateDisplayExtent();
    pImageViewer->SetRenderWindow(ui->qvtkWidget->GetRenderWindow());
    pImageViewer->SetRenderer(pRenderer);
    pImageViewer->SetupInteractor(ui->qvtkWidget->GetInteractor());
}

MainWindow::~MainWindow()
{
    delete ui;
}

QT UI 文件內容(粘貼該部分內容道文本文件,將格式改爲.ui即可) 

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <layout class="QHBoxLayout" name="horizontalLayout">
    <item>
     <widget class="QVTKWidget" name="qvtkWidget"/>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menuBar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>400</width>
     <height>22</height>
    </rect>
   </property>
  </widget>
  <widget class="QToolBar" name="mainToolBar">
   <attribute name="toolBarArea">
    <enum>TopToolBarArea</enum>
   </attribute>
   <attribute name="toolBarBreak">
    <bool>false</bool>
   </attribute>
  </widget>
  <widget class="QStatusBar" name="statusBar"/>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <customwidgets>
  <customwidget>
   <class>QVTKWidget</class>
   <extends>QWidget</extends>
   <header>QVTKWidget.h</header>
  </customwidget>
 </customwidgets>
 <resources/>
 <connections/>
</ui>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章