18 #include <vtkAxesActor.h>
19 #include <vtkCamera.h>
20 #include <vtkCellPicker.h>
21 #include <vtkCommand.h>
22 #include <vtkGenericOpenGLRenderWindow.h>
23 #include <vtkInteractorStyleRubberBandZoom.h>
24 #include <vtkInteractorStyleSwitch.h>
27 #include <vtkOrientationMarkerWidget.h>
28 #include <vtkPNGWriter.h>
29 #include <vtkRenderWindow.h>
30 #include <vtkRenderWindowInteractor.h>
31 #include <vtkRenderer.h>
32 #include <vtkSmartPointer.h>
33 #include <vtkWindowToImageFilter.h>
37 #include <QFileDialog>
38 #include <QInputDialog>
53 vtkNew<vtkRenderer> ren;
56 vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;
57 vtkWidget->SetRenderWindow(renderWindow);
58 vtkWidget->GetRenderWindow()->AddRenderer(ren);
65 vtkSmartPointer<vtkCellPicker> picker =
66 vtkSmartPointer<vtkCellPicker>::New();
68 renderWindow->GetInteractor()->SetPicker(picker);
72 ren->SetBackground(0.0, 0.0, 0.0);
75 vtkSmartPointer<vtkAxesActor> axesActor =
76 vtkSmartPointer<vtkAxesActor>::New();
112 if (vtkWidget->GetRenderWindow()->IsDrawable())
114 vtkWidget->GetRenderWindow()->Render();
121 vtkCamera* cam =
_vtkRender->GetActiveCamera();
122 double* fp = cam->GetFocalPoint();
123 double*
p = cam->GetPosition();
124 double dist = std::sqrt(vtkMath::Distance2BetweenPoints(
p, fp));
125 cam->SetPosition(fp[0] + (x * dist), fp[1] + (y * dist),
128 if (x != 0 || y != 0)
130 cam->SetViewUp(0.0, 0.0, 1.0);
134 cam->SetViewUp(0.0, 1.0, 0.0);
156 vtkSmartPointer<vtkInteractorStyleRubberBandZoom>::New();
157 vtkWidget->GetRenderWindow()->GetInteractor()->SetInteractorStyle(
160 cursor.setShape(Qt::CrossCursor);
161 vtkWidget->setCursor(cursor);
165 vtkWidget->GetRenderWindow()->GetInteractor()->SetInteractorStyle(
168 cursor.setShape(Qt::ArrowCursor);
169 vtkWidget->setCursor(cursor);
181 _vtkRender->GetActiveCamera()->SetParallelProjection(checked);
188 QString filename = QFileDialog::getSaveFileName(
189 this, tr(
"Save screenshot"),
190 settings.value(
"lastScreenshotDir").toString(),
"PNG file (*.png)");
191 if (filename.count() > 4)
194 int magnification = QInputDialog::getInt(
195 this, tr(
"Screenshot magnification"),
196 tr(
"Enter a magnification factor for the resulting image."), 2, 1,
201 settings.setValue(
"lastScreenshotDir", dir.absolutePath());
209 vtkSmartPointer<vtkWindowToImageFilter> windowToImageFilter =
210 vtkSmartPointer<vtkWindowToImageFilter>::New();
211 windowToImageFilter->SetInput(vtkWidget->GetRenderWindow());
214 windowToImageFilter->SetScale(magnification);
216 windowToImageFilter->SetInputBufferTypeToRGBA();
217 windowToImageFilter->Update();
219 vtkSmartPointer<vtkPNGWriter> writer = vtkSmartPointer<vtkPNGWriter>::New();
220 writer->SetFileName(filename.toStdString().c_str());
221 writer->SetInputData(windowToImageFilter->GetOutput());
229 this->setCursor(QCursor(shape));
Definition of the Point class.
Definition of the VtkCustomInteractorStyle class.
Definition of the VtkPickCallback class.
void setHighlightActor(bool on)
static VtkCustomInteractorStyle * New()
static VtkPickCallback * New()