Bug report #10887

Updated by Giovanni Manghi almost 7 years ago

*Qgis 2.4 version return empty QgsComposition from standalone application*

QgsComposition empty from QgsMapRenderer()

This is the code that work with 2.2

if I use myMapRenderer=iface.mapCanvas().mapRenderer() from python console it work fine



project = "myproject.qgs"



QgsProject.instance().setFileName(project)

QgsProject.instance().read()



layertot = QgsMapLayerRegistry.instance().mapLayers()

myMapRenderer = QgsMapRenderer()

myMapRenderer.setLayerSet(layertot.keys())

mapRectangle = QgsRectangle(xmin,ymin,xmax,ymax)

myMapRenderer.setExtent(mapRectangle)



comp = QgsComposition(myMapRenderer)

comp.setPlotStyle(QgsComposition.Print)

comp.setPaperSize(180,180)

comp.setPrintResolution(150)

composerMap = QgsComposerMap(comp, 0,0,180,180)

comp.addItem(composerMap)



dpi = comp.printResolution()

dpmm = dpi / 25.4

width = int(dpmm * comp.paperWidth())

height = int(dpmm * comp.paperHeight())

image = QImage(QSize(width, height), QImage.Format_ARGB32)

image.setDotsPerMeterX(dpmm * 1000)

image.setDotsPerMeterY(dpmm * 1000)

image.fill(0)

imagePainter = QPainter(image)

sourceArea = QRectF(0, 0, comp.paperWidth(), comp.paperHeight())

targetArea = QRectF(0, 0, width, height)

comp.render(imagePainter, targetArea, sourceArea)

imagePainter.end()

image.save("c:/temp/test.png", "png")



Back