7#include <vtkAxesActor.h>
9#include <vtkCellPicker.h>
10#include <vtkCommand.h>
11#include <vtkGenericOpenGLRenderWindow.h>
12#include <vtkInteractorStyleRubberBandZoom.h>
13#include <vtkInteractorStyleSwitch.h>
16#include <vtkOrientationMarkerWidget.h>
17#include <vtkPNGWriter.h>
18#include <vtkRenderWindow.h>
19#include <vtkRenderWindowInteractor.h>
20#include <vtkRenderer.h>
21#include <vtkSmartPointer.h>
22#include <vtkWindowToImageFilter.h>
27#include <QInputDialog>
42 vtkNew<vtkRenderer> ren;
45 vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
46 vtkWidget->setRenderWindow(renderWindow);
47 vtkWidget->renderWindow()->AddRenderer(ren);
54 vtkSmartPointer<vtkCellPicker> picker =
55 vtkSmartPointer<vtkCellPicker>::New();
57 renderWindow->GetInteractor()->SetPicker(picker);
61 ren->SetBackground(0.0, 0.0, 0.0);
64 vtkSmartPointer<vtkAxesActor> axesActor =
65 vtkSmartPointer<vtkAxesActor>::New();
101 vtkWidget->renderWindow()->Render();
107 vtkCamera* cam =
_vtkRender->GetActiveCamera();
108 double* fp = cam->GetFocalPoint();
109 double* p = cam->GetPosition();
110 double dist = std::sqrt(vtkMath::Distance2BetweenPoints(p, fp));
111 cam->SetPosition(fp[0] + (x * dist), fp[1] + (y * dist),
114 if (x != 0 || y != 0)
116 cam->SetViewUp(0.0, 0.0, 1.0);
120 cam->SetViewUp(0.0, 1.0, 0.0);
142 vtkSmartPointer<vtkInteractorStyleRubberBandZoom>::New();
143 vtkWidget->renderWindow()->GetInteractor()->SetInteractorStyle(
146 cursor.setShape(Qt::CrossCursor);
147 vtkWidget->setCursor(cursor);
151 vtkWidget->renderWindow()->GetInteractor()->SetInteractorStyle(
154 cursor.setShape(Qt::ArrowCursor);
155 vtkWidget->setCursor(cursor);
167 _vtkRender->GetActiveCamera()->SetParallelProjection(checked);
174 QString filename = QFileDialog::getSaveFileName(
175 this, tr(
"Save screenshot"),
176 settings.value(
"lastScreenshotDir").toString(),
"PNG file (*.png)");
177 if (filename.count() > 4)
180 int magnification = QInputDialog::getInt(
181 this, tr(
"Screenshot magnification"),
182 tr(
"Enter a magnification factor for the resulting image."), 2, 1,
187 settings.setValue(
"lastScreenshotDir", dir.absolutePath());
195 vtkSmartPointer<vtkWindowToImageFilter> windowToImageFilter =
196 vtkSmartPointer<vtkWindowToImageFilter>::New();
197 windowToImageFilter->SetInput(vtkWidget->renderWindow());
200 windowToImageFilter->SetScale(magnification);
202 windowToImageFilter->SetInputBufferTypeToRGBA();
203 windowToImageFilter->Update();
205 vtkSmartPointer<vtkPNGWriter> writer = vtkSmartPointer<vtkPNGWriter>::New();
206 writer->SetFileName(filename.toStdString().c_str());
207 writer->SetInputData(windowToImageFilter->GetOutput());
215 this->setCursor(QCursor(shape));
static VtkCustomInteractorStyle * New()
static VtkPickCallback * New()