<div dir="ltr"><div><div>Hello,<br></div>I have a problem resizing offscreen rendered window. The code below is simple demo of my problem. When I run this code on linux everything work as expected, saved 'screenshot' is of requested 320x240 resolution and UI stays intact. On windows however SetSize() is simply ignored and screenshot is saved in native UI resolution. Interactive resizing of vtk widget works correctly so I guess I am missing some important bit. Any help is welcome.<br><br></div>PS. I use vtk6.2 and qt4.8 on both systems<div><div><div><div><br>#!/usr/bin/env python<br> <br>import sys<br>import vtk<br>from PyQt4 import QtCore, QtGui<br>from vtk.qt4.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor<br> <br>class MainWindow(QtGui.QMainWindow):<br> <br>    def __init__(self, parent = None):<br>        QtGui.QMainWindow.__init__(self, parent)<br> <br>        self.hs = QtGui.QSplitter(QtCore.Qt.Horizontal)<br>        self.vs = QtGui.QSplitter(QtCore.Qt.Vertical)<br><br>        self.vspace0 = QtGui.QLabel('')<br>        self.vs.addWidget(self.vspace0)<br>        <br>        self.vtkWidget = QVTKRenderWindowInteractor(self.vs)<br>        self.vs.addWidget(self.vtkWidget)<br>        <br>        self.vspace1 = QtGui.QPushButton('Save')<br>        self.vs.addWidget(self.vspace1)<br>        <br>        self.hspace0 = QtGui.QLabel('')<br>        self.hs.addWidget(self.hspace0)<br>        <br>        self.hs.addWidget(self.vs)<br>        <br>        self.hspace1 = QtGui.QLabel('')<br>        self.hs.addWidget(self.hspace1)        <br>         <br>        self.ren = vtk.vtkRenderer()<br>        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)<br>        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()<br> <br>        # Create source<br>        source = vtk.vtkConeSource()<br>        source.SetResolution(256)<br>         <br>        # Create a mapper<br>        mapper = vtk.vtkPolyDataMapper()<br>        mapper.SetInputConnection(source.GetOutputPort())<br> <br>        # Create an actor<br>        actor = vtk.vtkActor()<br>        actor.SetMapper(mapper)<br> <br>        self.ren.AddActor(actor)<br> <br>        self.ren.ResetCamera()<br>        self.setCentralWidget(self.hs)<br> <br>        self.show()<br>        self.iren.SetInteractorStyle(vtk.vtkInteractorStyleRubberBandPick())<br>        self.iren.Initialize()<br>        <br>        self.vspace1.clicked.connect(self.screenshot)<br>        <br>    def to_image(self, renderWindow):<br>        windowToImageFilter = vtk.vtkWindowToImageFilter()<br>        windowToImageFilter.SetInput(renderWindow)<br>        windowToImageFilter.SetMagnification(1)<br>        windowToImageFilter.Update()<br><br>        return windowToImageFilter<br><br>    def screenshot(self):<br>        wren = self.vtkWidget.GetRenderWindow()<br>        w,h = wren.GetSize()<br>        wren.OffScreenRenderingOn()<br>        print((w,h))<br>        wren.SetSize(320,240)<br>        print(wren.GetSize())<br>        <br>        windowToImageFilter = self.to_image(wren)<br><br>        writer = vtk.vtkPNGWriter()<br>        writer.SetInputConnection(windowToImageFilter.GetOutputPort())    <br>        writer.SetFileName('test_out.png')<br>        writer.Write()<br>        <br>        wren.SetSize(w,h)<br>        wren.OffScreenRenderingOff()<br>        <br>        print('Saved screenshot!')<br> <br>if __name__ == "__main__":<br> <br>    app = QtGui.QApplication(sys.argv)<br> <br>    window = MainWindow()<br>    window.resize(800,800)<br>    window.setWindowTitle('Simple')<br> <br>    sys.exit(app.exec_())<br><br></div></div></div></div></div>